Bonjour,
Je voudrais ajouter des noms de plages incrémentés sur chaque range A7:A400, B7:B400, etc .... et les nommer "dropZ1A","dropZ1B", etc ... 1 étant l'index de la feuille et la lettre, la lettre de la colonne, ceci automatiquement via macro avec le code suivant :
Mon problème est que malgré qu' à la ligne 5 les datas soient correctes 1 : $A:$A, 2 : $B:$B, etc ..., les noms de plages sont attribués comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Sub BuildRefNames() On Error GoTo err 1 Dim nRowDeb As Byte: nRow = 7 2 Dim nRowFin As Integer: nCol = 400 3 Feuil1.Activate 4 For Each c In Feuil1.Columns 5 MsgBox c.Column & " : " & c.Address 6 ' c.Range(Cells(nRow, c.Column), Cells(nCol, c.Column)).Select 7 ' Selection.Name = "dropZ" & Feuil1.Index & lettrecolumns(c.Column) 8 c.Range(Cells(nRowDeb, c.Column), Cells(nRowFin, c.Column)).Name = "dropZ" & Feuil1.Index & lettrecolumns(c.Column) 9 Next Exit Sub err: MsgBox ("erreur n° " & err.Number & " à la ligne " & Erl() & ", " & err.Description) Resume Next End Sub Function lettrecolumns(l As Integer) On Error GoTo err lettrecolumns = Split(Columns(l).Address(ColumnAbsolute:=False), ":")(1) Exit Function err: lettrecolumns = "#" Resume Next 'Val(Mid(Columns("AF").Address(ReferenceStyle:=xlR1C1), 2)) End Function
dropZ1A ==> '=Feuil1!$A$7:$A$400'
dropZ1B ==> '=Feuil1!$C$7:$C$400'
dropZ1C ==> '=Feuil1!$E$7:$E$400'
dropZ1D ==> '=Feuil1!$G$7:$G$400'
....
Vous avez compris , une colonne est ignorée à chaque passage dans la boucle.Pourtant, each veut bien dire each ...
Vous vous doutez bien que j'ai essayé bcp d'écriture d'objets différentes dans le each mais rien à faire ...
Rq : Si on spécifie la colonne entière, là par contre çà fonctionne et pas de colonne sur 2 ignorée ...
Merci
Partager