NB Colonnes non fixes

Bonjour petite question bête j'aimerai déclarer cette plage de données :

DerCol = .Range("B2" & Columns.Count).End(xlToLeft).Column

GDP = .Range("B2:B" & DerCol)

Est-ce la bonne formulation pour déclarer une plage de données où le nombre de colonnes va changer ?

Merci d'avance !

Bonjour,

Je verrais mieux un code de ce type :

Dim GDP As Range
    With ActiveSheet
        Set GDP = .Range("B2", .Cells(2, Columns.Count).End(xlToLeft))
    End With

A+

Est ce que cette formulation en prend pas seulement la ligne 2 ?

J'aimerai que GDP fasse 190 lignes en plus

C'est pour cela que j'avais défini DerCol car je m'en sers dans plusieurs fonctions (et je fais plusieurs variantes) :

With Worksheets("GDP_Deflator")

DerCol = .Range("B2" & Columns.Count).End(xlToLeft).Column

GDP = .Range("B2:B190" & DerCol)

GDP_Pays = .Range("B:B")

GDP_Year = .Range(Cells(2, 2).Cells(2, DerCol))

End With

Au passage comment je peux m'assurer que ces lignes de codes marchent (genre faire apparaitre quelque part les données )?

Merci beaucoup !

Plusieurs choses à savoir pour éviter de te perdre :

1) Pour déterminer le numéro de la dernière colonne renseignée sur la ligne 2 :

DerCol = .Cells(2, Columns.Count).End(xlToLeft).Column

Pour visualiser l'effet de cette instruction, tu te positionnes sur la dernière cellule de la ligne 2 (soit XFD2) puis tu appuies sur fin, puis flêche gauche.

C'est ce que fait la partie = .Cells(2, Columns.Count).End(xlToLeft)

.column renvoyant le numéro de colonne de la cellule ainsi sélectionnée.

2) Pour déterminer le numéro de la dernière ligne renseignée dans la colonne B :

DerLig = .Range("B" & Rows.Count).End(xlUp).Row

Pour visualiser l'effet de cette instruction, tu te positionnes sur la dernière cellule de la colonne B (soit B1048576) puis tu appuies sur fin, puis flêche haut.

3) Pour définir une plage de cellules il faut utiliser l'instruction SET qui permet d'attribuer une référence d'objet à la variable.

Exemples :

Set GDP_Pays = .Range("B3:B" & DerLig) pour la plage renseignée de la colonne B (En-têtes des lignes),
Set GDP_Year = .Range(.Cells(2, 3),.Cells(2, DerCol)) pour la plage renseignée de la ligne 2B (En-têtes des colonnes),
Set GDP_Données = .Range(.Cells(3, 3), .Cells(DerLig, DerCol)) pour la plage de données.

Un code à tester pour visualiser ces instructions :

Option Explicit
Sub Test()
Dim DerLig As Long
Dim DerCol As Integer
Dim GDP_Pays As Range, GDP_Year As Range, GDP_Données As Range
    With Worksheets("GDP_Deflator")
        DerCol = .Cells(2, Columns.Count).End(xlToLeft).Column
        DerLig = .Range("B" & Rows.Count).End(xlUp).Row
        Set GDP_Pays = .Range("B3:B" & DerLig)
        MsgBox "Pays :" & Chr(10) & GDP_Pays.Address
        Set GDP_Year = .Range(Cells(2, 3), .Cells(2, DerCol))
        MsgBox "Années :" & Chr(10) & GDP_Year.Address
        Set GDP_Données = .Range(.Cells(3, 3), .Cells(DerLig, DerCol))
        MsgBox "Données :" & Chr(10) & GDP_Données.Address
    End With
End Sub

A+

Merci j'ai tout compris c'était super clair

A+

Rechercher des sujets similaires à "colonnes fixes"