• Initiateur de la discussion Initiateur de la discussion LAURA15
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

LAURA15

Guest
J'essaie de me former un peu en VBA
J'ai comprsi un certains nombre de choses ouf 🙂
Mais je but sur cela par exemple

Jais un tableaus a 2 colonnes de ce type collone A et B
Ligne1 1
Ligne2 2
Ligne3 3
Ligne4 4
etc 5
eyc 6
etc 7
etc 8

Grace a cette macro la collone b est incremente de 1
Sub boucle_do_while_wend()
'Définition des variables
Dim a As Integer
a = 1
'Boucle jusqu'à ce qu'il
'rencontre une cellule vide
Do While Cells(a, 1).Value <> ''
Cells(a, 2).Value = a
a = a + 1
Loop
End Sub

Je croyais avoir compris mais quand j'ai voulue la modifier en faisant en sorte que l'incrementation parte de 6 cela ne fonctionne pas c'est donc que je n'ai pas compris cette partie je pense
je ne comprends pas la partie Cell(a,1) ????

voila c eque j'ai fait

Sub boucle_do_while_wend()
'Définition des variables
Dim a As Integer
a = 6
'Boucle jusqu'à ce qu'il
'rencontre une cellule vide
Do While Cells(a, 1).Value <> ''
Cells(a, 2).Value = a
a = a + 1
Loop
End Sub

cela ne fonctionne pas il ne commence pas a 6 a la ligne 1
J'aimerais comprendre pourquoi ?
qui at'il dans Cells(a,1) ???
Merci
 
J'ai regarde normalement par exemple Cells(1,1) fait reference a la ligne 1 collen 1
Donc je pensais qu'en faisant ca mais ca boucle snif dur dur
les débuts
Sub boucle_do_while_wend2()
'Définition des variables
Dim a As Integer
a = 6
'Boucle jusqu'à ce qu'il
'rencontre une cellule vide
Do While Cells(1, 1).Value <> ''
Cells(1, 2).Value = a
a = a + 1
Loop
End Sub
 
bonjour laura

cells(ligne, colonne) représente une cellule désignée par sa ligne et sa colonne.

dans ta boucle tu as besoin d'incrémenter deux choses, le numéro de la ligne ( Do While Cells(a, 1).Value <> ''), et le numéro à placer dans ta colonne 2 ( Cells(a, 2).Value = a).

Ce sont deux éléments distincts et tu ne peux donc utiliser la meme variable.

Ou faire varier l'une des deux utilisations :

Sub boucle_do_while_wend()
'Définition des variables
Dim a As Integer
a = 6
'Boucle jusqu'à ce qu'il
'rencontre une cellule vide
Do While Cells(a-5, 1).Value <> '''l e-5 sert à s'assurer que l'on part bien de la ligne 1
Cells(a-5, 2).Value = a
a = a + 1
Loop

De plus, il faut te méfier de ce type de boucle car si tu as une ligne vide au milieu de tes données en colonne A, la macro risque de ne pas traiter le reste de la colonne.

il vaut mieux, à mon avis lui préférer une boucle for to :

dim i as byte
for i=1 to range('a65536').end(xlup).row
cells(i,2)=i+5
next i

salut

Message édité par: Hervé, à: 07/11/2005 11:23
 
Ok super je viens de comprendre 😱hmy:
Pour la 2éme solution en effet c'est mieux en cas de cell vide mais je voulais tester un peu toutes les boucles
Par conte je pensais qu'il fallait mettre 'for each' apprement le each n'est pas obligatoire ? bon j'ai appris ca aussi
Merci
 
re laura

si si le each est obligatoire 🙂

Tu as 2 types de boucles différents :for to et for each.

Ne confond pas les deux.

Les boucles for to, sont des boucles d'incrémentation (comme les boucles do loop) c'est à dire que l'on incrémente un élément de la boucle pour la faire 'avancer' : for to i=1 to 100, on va incrémenter i de 1 à 100.

tandis que la boucle for to est une boucle de répétition, c'est à dire que l'on répète le code tant que l'on à un élément de la boucle.

dans ton cas ceci donnerait :

dim c as range
dim a as byte

a=6

for each c in range('a1:a'&range('a65536').end(xlup).row)
cells(c.row,2)=a
a=a+1
next c

On utilise plus facilement les boucles for each lorsque l'on doit travailler sur des cellules (enfin, c'est mon avis)

en résumé : tu as 3 types de boucles possibles : for to, for each, do loop

les boucles for each sont il me semble les plus rapide.

salut

Message édité par: hervé, à: 07/11/2005 13:21
 
Ok mais je me disais que si je voulais par exemple incrementer les lignes et decrementer les chiffres par exemple que ca parte de 6 et que aille vers 1
Il faudrait bien déclarer 2 variables
Donc j'ai fait mais il ne décremente pas a , il me mets 5 partout comme si cela était uen constante en fait ?

Sub decrement()
Dim i As Byte
Dim a AS Byte
a=6
For i = 1 To Range('a65536').End(xlUp).Row
Cells(i, 2) = a -1
Next i
End Sub
 
re laura

oui, c'est logique. Que dis ton code ?

pour i= 1 jusqu'à la dernière cellule non vide de la colonne A, place en colonne B a-1.

Mais comme tu n'incrémente pas a, la macro fait toujours a-1.

donc il faut que tu rajoutes un a=a-1 après l'inscription de a dans la cellule.

Sub decrement()
Dim i As Byte
Dim a AS Byte
a=6
For i = 1 To Range('a65536').End(xlUp).Row
Cells(i, 2) = a -1
a=a-1
Next i
End Sub

salut
 
j'ai essayé ca aussi pour decrementer mais c ane focntionne pas non plus snif

Sub Decrement2()
Dim c As Range
Dim a As Byte

a = 6

For Each c In Range('a1:a' & Range('a65536').End(xlUp).Row)
Cells(c.Row, 2) = a
a = a - 1
Next c

End Sub
 
merci je crois que ca va je vais m'entrainer avec d'autres exemples pour vois si j'ai bien compris
Merci encore, ca va finir par rentrer, pas hyper douéeau départ mais bosseuse alors 🙂 ca devrait aller 🙂
vraiment merci pour ton aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
323
Réponses
4
Affichages
728
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
448
Réponses
5
Affichages
614
Retour