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 :

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
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 :

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