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

Le
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
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
isabelle
Le #1914606
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


twinley
Le #1914603
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" 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




GD
Le #1914601
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)))
@+
twinley
Le #1914598
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" 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)))
@+




Poster une réponse
Anonyme