Spécifier l'étendue d'une plage de nom VBA
ppalouza
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous!
Voila mon problème:
- je crée des plages de noms (3 par feuille) via une boucle for, sur chaque feuille de mon classeur
- Je souhaiterais pourvoir, en VBA, spécifier l'étendue des plages de noms crées (mettre cette étendue sur la page où elles sont crées) mon problème est ici, les plages crées sont globales et non spécifiques à une feuille
- sur la page globale, j'insère une nouvelle ligne en remplissant les cases avec une formule contenant les noms des 3 plages crées
Voici mon code VBA pour le tout:
Si par ailleurs vous avez qeulques suggestions pour l'améliorer, le rendre plus lisible ou modifier quelques passages je suis preneur. Je suis en effet encore un peu novice en VBA!
Merci pour la réponse :)
Voila mon problème:
- je crée des plages de noms (3 par feuille) via une boucle for, sur chaque feuille de mon classeur
- Je souhaiterais pourvoir, en VBA, spécifier l'étendue des plages de noms crées (mettre cette étendue sur la page où elles sont crées) mon problème est ici, les plages crées sont globales et non spécifiques à une feuille
- sur la page globale, j'insère une nouvelle ligne en remplissant les cases avec une formule contenant les noms des 3 plages crées
Voici mon code VBA pour le tout:
Sub macro2() Application.DisplayAlerts = False Dim a As Long Dim i As Long Dim j As Long Dim w As String Dim D As String Dim k As Long Dim s As Long Dim F As Long a = InputBox("Veuillez rentrer l'année du marché ", "Insertion d'un nouveau marché", 2018) i = InputBox("Renter la numéro de la première ligne: ", "Insertion d'un nouveau marché", 0) j = InputBox("Renter la numéro de la dernière ligne: ", "Insertion d'un nouveau marché", 0) w = InputBox("Veuillez nommer le nouveau marché", "Insertion d'un nouveau marché", "Nom") D = InputBox("Résumez le nouveau marché en un mot clef: ", "Insertion d'un nouveau marché", "New") k = j - i s = i F = ThisWorkbook.Worksheets.Count - 1 For x = 5 To F Worksheets(x).Activate Rows("203").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows("204").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone L = "_L" m = "_M" P = "_P" Set xrangeL = Range(Cells(203, 12), Cells(204, 12)) ActiveWorkbook.Names.Add Name:=D & L, RefersToR1C1:=xrangeL Set xrangeM = Range(Cells(203, 13), Cells(204, 13)) ActiveWorkbook.Names.Add Name:=D & m, RefersToR1C1:=xrangeM Set xrangeP = Range(Cells(203, 16), Cells(204, 16)) ActiveWorkbook.Names.Add Name:=D & P, RefersToR1C1:=xrangeP Next Sheets(Sheets.Count).Activate For b = 1 To k Rows(s).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove s = s + 1 Next Range(Cells(i, 3), Cells(j, 3)).Select L = "_L" m = "_M" P = "_P" Set xrangeL = Range(Cells(i, 12), Cells(j, 12)) ActiveWorkbook.Names.Add Name:=D & L, RefersToR1C1:=xrangeL Set xrangeM = Range(Cells(i, 13), Cells(j, 13)) ActiveWorkbook.Names.Add Name:=D & m, RefersToR1C1:=xrangeM Set xrangeP = Range(Cells(i, 16), Cells(j, 16)) ActiveWorkbook.Names.Add Name:=D & P, RefersToR1C1:=xrangeP Selection.Merge Sheets("Atterissage_Global").Select n = InputBox("Renter la numéro de ligne: ", "Insertion d'un nouveau marché", 0) Rows(n).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Cells(n, 12).Value = "SOMME(INDIRECT(" & "C1" & "&!" & D & L & "))" Cells(n, 13).Value = "SOMME(INDIRECT(" & "C1" & "&!" & D & m & "))" Cells(n, 16).Value = "SOMME(INDIRECT(" & "C1" & "&!" & D & P & "))" End Sub
Si par ailleurs vous avez qeulques suggestions pour l'améliorer, le rendre plus lisible ou modifier quelques passages je suis preneur. Je suis en effet encore un peu novice en VBA!
Merci pour la réponse :)
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Spécifier l'étendue d'une plage de nom VBA
- Table ascii etendue - Guide
- Image de manchots sur une image de plage ✓ - Forum Graphisme
- Nom de l'adresse - Forum Jeux vidéo
- Nom de compte steam exemple - Forum Jeux vidéo
- Ça veut dire quoi intitulé d’une adresse ?? ✓ - Forum Loisirs / Divertissements
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
suggestions:
- ajouter "option explicit" en début de module
- utiliser des noms de variables qui permettent de comprendre à quoi sert la variable
que veux-tu dire par "spécifier l'étendue des plages de noms"? ce serait plus clair si tu expliquais ce que tu voulais réaliser, peut-être avec un exemple.
suggestions:
- ajouter "option explicit" en début de module
- utiliser des noms de variables qui permettent de comprendre à quoi sert la variable
que veux-tu dire par "spécifier l'étendue des plages de noms"? ce serait plus clair si tu expliquais ce que tu voulais réaliser, peut-être avec un exemple.
Je plussoie la réponse de yg_be.
Le nom de plage ne devrait pas être unique sur un classeur ? Dans ton code, tu essaies de donner le même nom sur plusieurs feuilles.
A+