OVH Cloud OVH Cloud

Columns

7 réponses
Avatar
Daniel
Bonjour.
Comment interpréter la commande :
Columns(5)(2) = "toto"
qui remplit la colonne 6 de totos; Comme une sorte d'offset ?
Cordialement.
Daniel

7 réponses

Avatar
tiah
j'ai bien hâte de voir si quelqu'un sait ça! :)

j'essaie plusieurs combinaison dans vba, et je ne trouve pas comment
l'interpréter !

=)
Avatar
AV
Comment interpréter la commande :
Columns(5)(2) = "toto"
qui remplit la colonne 6 de totos; Comme une sorte d'offset ?


Il s'agit d'une référence relative [Offset de 2 par rapport à l'index du
"Columns"]

Syntaxe "semblable" :

Range("E:E").Range("B:B") = "toto"

AV

Avatar
Daniel
Merci
La deuxième syntaxe est encore plus illisible.
Daniel
"AV" a écrit dans le message de news:

Comment interpréter la commande :
Columns(5)(2) = "toto"
qui remplit la colonne 6 de totos; Comme une sorte d'offset ?


Il s'agit d'une référence relative [Offset de 2 par rapport à l'index du
"Columns"]

Syntaxe "semblable" :

Range("E:E").Range("B:B") = "toto"

AV






Avatar
michdenis
Bonjour Daniel,

Columns est une collection des colonnes de la feuille

Columns(5) représente une colonne bien particulière de la feuille ou de la plage de cellules.

Columns(5)(2) représente le 2 ième élément de la collection des colonnes à partir de la colonne de référence, la colonne de
référence étant la première colonne. Ce n'est pas à proprement parlé équivalent à la propriété Offset d'un range, car dans ce cas,
ceci implique un déplacement... c'est à dire que la colonne de référence n'est pas utilisé dans le décompte, le décompte débute à la
colonne (ligne) suivante

exemple :
With Range("D1:M10")
Msgbox .columns(5)(2).column
end with

With worksheets("Feuil1")
Msgbox .columns(5)(2).column
end with


Et pour terminer, je te laisse réfléchir sur ces 3 exemples :
Les messages box afficheront 4 , 3 , 2 tu sais pourquoi ? ;-))

With Worksheets("Feuil1")
MsgBox .Columns(5)(0).Column
End With

With Worksheets("Feuil1")
MsgBox .Columns(5)(-1).Column
End With

With Worksheets("Feuil1")
MsgBox .Columns(5)(-2).Column
End With


Salutations!



"Daniel" a écrit dans le message de news: %23a%
Bonjour.
Comment interpréter la commande :
Columns(5)(2) = "toto"
qui remplit la colonne 6 de totos; Comme une sorte d'offset ?
Cordialement.
Daniel
Avatar
michdenis
La réponse à ma petite question et un petit supplément d'informations :

Excel permet des raccourcis. C'est pour cela que nous pouvons
écrire : Columns(5)(2) = "toto"

En fait, la syntaxe complète est : Columns(5).item(2) = "toto"
Le nom de la propriété "Item" de la collection "Columns" est
facultatif.

Quelques lignes de code comme exemple :
'-------------------------
Sub testdd()

With Worksheets("Feuil1")
MsgBox .Columns(5).Item(2).Column '=6
MsgBox .Columns(5).Item(2).Cells.Item(1, 1).Address ' = F1
MsgBox .Columns(5).Item(2).Cells(1, 1).Address ' = F1
MsgBox .Columns(5).Item(2).Cells(1, 1).Address ' = F1
MsgBox .Columns(5)(2).Cells(1, 1).Address ' = F1
End With

End Sub
'-------------------------

Pourquoi le résultat affiché est = 4
'-------------------
With Worksheets("Feuil1")
MsgBox .Columns(5)(0).Column
End With
'-------------------

Le premier item de la collection colonne = 1
Msgbox Columns.Item(1).Column égale à 1

En conséquence : item(0) est donc la première colonne à gauche de la colonne de référence, le cas échéant et lorsque c'est possible.
MsgBox .Columns(5)(0).Column = colonne 4


Salutations!






"michdenis" a écrit dans le message de news:
Bonjour Daniel,

Columns est une collection des colonnes de la feuille

Columns(5) représente une colonne bien particulière de la feuille ou de la plage de cellules.

Columns(5)(2) représente le 2 ième élément de la collection des colonnes à partir de la colonne de référence, la colonne de
référence étant la première colonne. Ce n'est pas à proprement parlé équivalent à la propriété Offset d'un range, car dans ce cas,
ceci implique un déplacement... c'est à dire que la colonne de référence n'est pas utilisé dans le décompte, le décompte débute à la
colonne (ligne) suivante

exemple :
With Range("D1:M10")
Msgbox .columns(5)(2).column
end with

With worksheets("Feuil1")
Msgbox .columns(5)(2).column
end with


Et pour terminer, je te laisse réfléchir sur ces 3 exemples :
Les messages box afficheront 4 , 3 , 2 tu sais pourquoi ? ;-))

With Worksheets("Feuil1")
MsgBox .Columns(5)(0).Column
End With

With Worksheets("Feuil1")
MsgBox .Columns(5)(-1).Column
End With

With Worksheets("Feuil1")
MsgBox .Columns(5)(-2).Column
End With


Salutations!



"Daniel" a écrit dans le message de news: %23a%
Bonjour.
Comment interpréter la commande :
Columns(5)(2) = "toto"
qui remplit la colonne 6 de totos; Comme une sorte d'offset ?
Cordialement.
Daniel
Avatar
Daniel
Je viens de rentrer et je trouve ton post encyclopédique :
c'est top. J'ai tout compris et même anticipé les derniers résultats. Comme
quoi il ne faut jamais désespérer.
Daniel
"michdenis" a écrit dans le message de news:

Bonjour Daniel,

Columns est une collection des colonnes de la feuille

Columns(5) représente une colonne bien particulière de la feuille ou de la
plage de cellules.

Columns(5)(2) représente le 2 ième élément de la collection des colonnes à
partir de la colonne de référence, la colonne de
référence étant la première colonne. Ce n'est pas à proprement parlé
équivalent à la propriété Offset d'un range, car dans ce cas,
ceci implique un déplacement... c'est à dire que la colonne de référence
n'est pas utilisé dans le décompte, le décompte débute à la
colonne (ligne) suivante

exemple :
With Range("D1:M10")
Msgbox .columns(5)(2).column
end with

With worksheets("Feuil1")
Msgbox .columns(5)(2).column
end with


Et pour terminer, je te laisse réfléchir sur ces 3 exemples :
Les messages box afficheront 4 , 3 , 2 tu sais pourquoi ? ;-))

With Worksheets("Feuil1")
MsgBox .Columns(5)(0).Column
End With

With Worksheets("Feuil1")
MsgBox .Columns(5)(-1).Column
End With

With Worksheets("Feuil1")
MsgBox .Columns(5)(-2).Column
End With


Salutations!



"Daniel" a écrit dans le message de news:
%23a%
Bonjour.
Comment interpréter la commande :
Columns(5)(2) = "toto"
qui remplit la colonne 6 de totos; Comme une sorte d'offset ?
Cordialement.
Daniel





Avatar
Daniel
Et voila qui règle le dernier point qui pouvait rester obscur.
PS. valable pour décalage ligne et colonne :
Range("A1")(2, 2) = "toto"
Encore merci.
Daniel
"michdenis" a écrit dans le message de news:

La réponse à ma petite question et un petit supplément d'informations :

Excel permet des raccourcis. C'est pour cela que nous pouvons
écrire : Columns(5)(2) = "toto"

En fait, la syntaxe complète est : Columns(5).item(2) = "toto"
Le nom de la propriété "Item" de la collection "Columns" est
facultatif.

Quelques lignes de code comme exemple :
'-------------------------
Sub testdd()

With Worksheets("Feuil1")
MsgBox .Columns(5).Item(2).Column '=6
MsgBox .Columns(5).Item(2).Cells.Item(1, 1).Address ' = F1
MsgBox .Columns(5).Item(2).Cells(1, 1).Address ' = F1
MsgBox .Columns(5).Item(2).Cells(1, 1).Address ' = F1
MsgBox .Columns(5)(2).Cells(1, 1).Address ' = F1
End With

End Sub
'-------------------------

Pourquoi le résultat affiché est = 4
'-------------------
With Worksheets("Feuil1")
MsgBox .Columns(5)(0).Column
End With
'-------------------

Le premier item de la collection colonne = 1
Msgbox Columns.Item(1).Column égale à 1

En conséquence : item(0) est donc la première colonne à gauche de la
colonne de référence, le cas échéant et lorsque c'est possible.
MsgBox .Columns(5)(0).Column = colonne 4


Salutations!