Table des matières:
Vidéo: Créer un formulaire personnalisé pour saisir des données sur Excel 2025
Si vous utilisez beaucoup de cellules et de plages nommées dans votre classeur, vous serez peut-être surpris de découvrir qu'Excel ne fournit aucun moyen de lister les détails de chaque nom. Des informations utiles apparaissent dans la boîte de dialogue Gestionnaire de noms, mais il n'existe aucun moyen d'afficher ces informations d'une manière qui peut être imprimée.
Le code VBA proposé ici génère un rapport utile décrivant les noms définis dans n'importe quel classeur.
Exemple de rapport
Ici, vous voyez un exemple de rapport de nom.
Le rapport, créé dans une nouvelle feuille de calcul, contient les informations suivantes pour chaque nom:
-
Nom: Le nom.
-
RefersTo: La définition du nom. Habituellement, ce sera une cellule ou une plage, mais un nom peut également définir une formule.
-
Cellules: Nombre de cellules contenues dans la plage nommée. Pour les formules nommées, ce champ affiche # N / A.
-
Champ d'application: Portée du nom - soit Classeur, soit nom de la feuille de calcul spécifique sur laquelle le nom est valide.
-
Masqué: Vrai si le nom est caché. Les noms masqués sont créés par certains compléments (tels que le solveur) et n'apparaissent pas dans la boîte de dialogue Gestionnaire de nom.
-
Erreur: Vrai si le nom contient une référence erronée.
-
Lien: Lien hypertexte qui, lorsqu'il est cliqué, active la plage nommée. Seuls les noms qui se réfèrent à des cellules ou des plages incluent un lien.
-
Commentaire: Commentaire du nom, le cas échéant.
Le code VBA
Pour utiliser ce code, appuyez sur Alt + F11 pour activer Visual Basic Editor. Choisissez ensuite Insérer → Module pour insérer un nouveau module VBA. Copiez le code et collez-le dans le nouveau module.
Sub GenerateNameReport () 'Génère un rapport pour tous les noms dans le classeur' (N'inclut pas les noms de table) Dim n As Nom Dim Row As Long Dim CellCount As Variante 'Quitter si aucun nom Si ActiveWorkbook. Des noms. Count = 0 Then MsgBox "Le classeur actif n'a pas de noms définis. "Exit Sub End If" Quitter si le classeur est protégé Si ActiveWorkbook. ProtectStructure Then MsgBox "Impossible d'ajouter une nouvelle feuille car le classeur est protégé. "Exit Sub End If" Insère une nouvelle feuille pour le rapport ActiveWorkbook. Des feuilles de calcul. Ajouter ActiveSheet. Déplacer après: = Feuilles (ActiveWorkbook, Feuilles, Décompte) ActiveWindow. DisplayGridlines = False 'Ajouter la première ligne du titre Range ("A1: H1"). Fusionner avec la plage ("A1"). Valeur = "Nom du rapport pour:" & ActiveWorkbook. Prénom. Police de caractère. Taille = 14. Font. Gras = Vrai. HorizontalAlignment = xlCenter End With 'Ajouter une deuxième ligne de titre Range ("A2: H2"). Fusionner avec la plage ("A2"). Valeur = "Généré" et maintenant. HorizontalAlignment = xlCenter End With 'Ajouter les en-têtes Range ("A4: H4") = Array ("Nom", "RefersTo", "Cellules", _ "Scope", "Caché", "Erreur", "Lien", " Commentaire ")" Boucle à travers les noms Row = 4 Sur erreur Resume Suivant pour chaque n Dans ActiveWorkbook.Noms Row = Row + 1 'Colonne A: Nom Si n. Nom Comme "*! * "Then Cells (Row, 1) = Split (n ° Nom,"! ") (1) 'Supprimer le nom de la feuille Else Cells (Row, 1) = n. Nom Fin Si 'Colonne B: RefersTo Cells (Row, 2) = "'" & n. RefersTo 'Colonne C: Nombre de cellules CellCount = CVErr (xlErrNA)' Renvoie la valeur de la formule nommée CellCount = n. RefersToRange. CountLarge Cells (Row, 3) = CellCount 'Colonne D: Portée Si n. Nom Comme "*! * "Then Cells (Row, 4) = Split (n ° Nom,"! ") (0) 'extrait le nom de la cellule Cells (Row, 4) = Replace (Cells (Row, 4),"' "," ") 'remove apostrophes Else Cells (Row, 4) = "Cahier de travail" Fin Si' Colonne E: Caches d'état masqués (Ligne, 5) = Non n. Colonne F visible: Nom erroné Cells (Row, 6) = n. RefersTo Like "* [#] REF! * "'Colonne G: Lien hypertexte si pas d'application. IsNA (Cells (Row, 3)) puis ActiveSheet. Hyperliens Add _ Anchor: = Cells (Row, 7), _ Adresse: = "", _ SubAddress: = n. Nom, _ TextToDisplay: = n. Nom Fin Si 'Colonne H: cellules de commentaire (ligne, 8) = n. Commenter Suivant n 'Convertir en une table ActiveSheet. ListObjects. Ajoutez _ SourceType: = xlSrcRange, _ Source: = Range ("A4"). CurrentRegion 'Ajuste les colonnes Colonnes Larges ("A: H"). Colonne entière. AutoFit End Sub
Génération d'un rapport
Exécutez la procédure GenerateNameReport et le rapport est généré sur une nouvelle feuille de calcul dans le classeur actif. Le code ne doit pas être dans le classeur qui contient les noms pour le rapport.
Si vous trouvez ce code utile, vous pouvez le stocker dans votre classeur de macros personnel ou créer un complément.
