Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA - Columns("C:C") défini par une variable numérique = 3

4 réponses
Avatar
twinley
Bonsoir à tous,

Une question de syntaxe pour colonnes :
alors que je récupère le numero de colonne par la var I,
quand I=3
alors j'aimerai remplacer columms ("C:C") par quelque chose qui va devenir 4
pour ("D:D") au tour suivant et ainsi de suite.
Je pourrais faire un select case pour les 12 cas, mais il ya surement plus
élégant.

Comment modifier cette ligne ?
Sheets(1).Columns("C:C").EntireColumn.AutoFit


derlgn = Sheets(2).Range("A150").End(xlUp).Row
For I = 2 To 13
dercol = Sheets(I).UsedRange.Column + Sheets(I).UsedRange.Columns.Count
Sheets(I).Range(Cells(3, dercol), Cells(derlgn, dercol)).Copy _
Destination:=Sheets(1).Range(Cells(3, I + 1))
Application.CutCopyMode = False
Sheets(1).Range(Cells(3, I + 1)).NumberFormat = "[h]:mm"
Sheets(1).Range(Cells(2, I + 1)) = Sheets(I).Name
Sheets(1).Range(Cells(2, I + 1)).Select.HorizontalAlignment = xlCenter
Sheets(1).Columns("C:C").EntireColumn.AutoFit
Next I

Merci pour votre aide.
--
à+twinley

4 réponses

Avatar
isabelle
salut twinley,

si la variable est numérique
I=2
'pour sélectionner la colonne C
Sheets(1).Columns(I + 1).EntireColumn.AutoFit

isabelle


Bonsoir à tous,

Une question de syntaxe pour colonnes :
alors que je récupère le numero de colonne par la var I,
quand I=3
alors j'aimerai remplacer columms ("C:C") par quelque chose qui va devenir 4
pour ("D:D") au tour suivant et ainsi de suite.
Je pourrais faire un select case pour les 12 cas, mais il ya surement plus
élégant.

Comment modifier cette ligne ?
Sheets(1).Columns("C:C").EntireColumn.AutoFit

derlgn = Sheets(2).Range("A150").End(xlUp).Row
For I = 2 To 13
dercol = Sheets(I).UsedRange.Column + Sheets(I).UsedRange.Columns.Count
Sheets(I).Range(Cells(3, dercol), Cells(derlgn, dercol)).Copy _
Destination:=Sheets(1).Range(Cells(3, I + 1))
Application.CutCopyMode = False
Sheets(1).Range(Cells(3, I + 1)).NumberFormat = "[h]:mm"
Sheets(1).Range(Cells(2, I + 1)) = Sheets(I).Name
Sheets(1).Range(Cells(2, I + 1)).Select.HorizontalAlignment = xlCenter
Sheets(1).Columns("C:C").EntireColumn.AutoFit
Next I

Merci pour votre aide.
--
à+twinley


Avatar
twinley
Mille merci Isabelle.
c'est aussi simple que ça...
par contre mes autres lignes sont douteuses, mais j'y travaille.
Bonne soirée
--
à+twinley
"isabelle" a écrit dans le message de
news:
salut twinley,

si la variable est numérique
I=2
'pour sélectionner la colonne C
Sheets(1).Columns(I + 1).EntireColumn.AutoFit

isabelle


Bonsoir à tous,

Une question de syntaxe pour colonnes :
alors que je récupère le numero de colonne par la var I,
quand I=3
alors j'aimerai remplacer columms ("C:C") par quelque chose qui va
devenir 4


pour ("D:D") au tour suivant et ainsi de suite.
Je pourrais faire un select case pour les 12 cas, mais il ya surement
plus


élégant.

Comment modifier cette ligne ?
Sheets(1).Columns("C:C").EntireColumn.AutoFit

derlgn = Sheets(2).Range("A150").End(xlUp).Row
For I = 2 To 13
dercol = Sheets(I).UsedRange.Column +
Sheets(I).UsedRange.Columns.Count


Sheets(I).Range(Cells(3, dercol), Cells(derlgn, dercol)).Copy _
Destination:=Sheets(1).Range(Cells(3, I + 1))
Application.CutCopyMode = False
Sheets(1).Range(Cells(3, I + 1)).NumberFormat = "[h]:mm"
Sheets(1).Range(Cells(2, I + 1)) = Sheets(I).Name
Sheets(1).Range(Cells(2, I + 1)).Select.HorizontalAlignment xlCenter
Sheets(1).Columns("C:C").EntireColumn.AutoFit
Next I

Merci pour votre aide.
--
à+twinley




Avatar
GD
Bonsour ® twinley ,
heu... simplement
For I= 2 to 13
'-----ton code
' i varie alors de 2 à 13 alors le n° de colonne de 3 à 14 soit C à N
Sheets(1).Columns(I+1).EntireColumn.AutoFit
'-----le reste du code
Next

mais tu peux également écrire hors de la boucle for :
Sheets(1).Range("3:14").EntireColumn.AutoFit
;o)))
@+
Avatar
twinley
Bonsoir GD, pardon bonjour.

Oui, c'est pas glorieux. C'était en attente d'avoir la syntaxe de la col.
C'est devenu ceci car l'autre était buggé à mort.

Sub recapsomme()
derlgn = Sheets(2).Range("A150").End(xlUp).Row
For I = 2 To 13
dercol = Sheets(I).UsedRange.Column +
Sheets(I).UsedRange.Columns.Count - 1
Sheets(I).Columns(dercol).EntireColumn.Copy _
Destination:=Sheets(1).Columns(I + 1).EntireColumn
Sheets(1).Columns(I + 1).EntireColumn.NumberFormat = "[h]:mm"
Sheets(1).Cells(2, I + 1) = Sheets(I).Name
Sheets(1).Cells(2, I + 1).HorizontalAlignment = xlCenter
' Sheets(1).Columns(I + 1).EntireColumn.AutoFit
Next I
Sheets(1).Range("3:14").EntireColumn.AutoFit
End Sub

Merci pour ton aide, je prend bonne note et j'adopte, on gagne 11
instructions.
Dire que je me compliquais la vie, ah là là...
--
à+twinley
"GD" a écrit dans le message de
news:
Bonsour ® twinley ,
heu... simplement
For I= 2 to 13
'-----ton code
' i varie alors de 2 à 13 alors le n° de colonne de 3 à 14 soit C à N
Sheets(1).Columns(I+1).EntireColumn.AutoFit
'-----le reste du code
Next

mais tu peux également écrire hors de la boucle for :
Sheets(1).Range("3:14").EntireColumn.AutoFit
;o)))
@+