Spécifier l'étendue d'une plage de nom VBA
ppalouza
Messages postés
9
Statut
Membre
-
Zoul67 Messages postés 2001 Statut Membre -
Zoul67 Messages postés 2001 Statut Membre -
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
- Annuaire portable gratuit a partir d'un nom ✓ - Forum Mobile
- Nom de l'adresse - Forum Jeux vidéo
- Image de manchots sur une image de plage ✓ - Forum Graphisme
- Nom de compte steam exemple - Forum Jeux vidéo
- Trouver un nom avec une adresse ✓ - Forum Loisirs / Divertissements
1 réponse
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+