loloslandes
Messages postés2Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention30 juillet 2009
-
29 juil. 2009 à 16:34
loloslandes
Messages postés2Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention30 juillet 2009
-
30 juil. 2009 à 21:52
bonjour,
je suis débutante sous vba excel 2003.
j'ai un problème avec une boucle.
je voudrai que mon code copie dans la colonne 4 pour chaque lignes P la valeur de la première colonne de droite non vide ainsi de suite .
expl:
0001 colonne 4 =1 ligne 1
0501 colonne 4 =5 ligne 2
6125 colonne 4 =6 ligne 3
voici mon code :
Sub er()
Dim F As Integer ' max ligne
Dim L As Integer 'max colonne
Dim I As Integer 'debut de colonne
Dim P As Integer 'debut de ligne
'nombre de ligne pour les champs LISTE
Sheets("LISTE").Select
Range("B23").Select
Selection.End(xlDown).Select
F = ActiveCell.Row
Sheets("LISTE").Select
Range("d21").Select
Selection.End(xlToRight).Select
L = ActiveCell.Column
I = 5
P = 23
Do While P < F+1 And I < L+1 And Worksheets("LISTE").Cells(P, I).Value = ""
I = I + 1
Loop
1) Si j'ai bien compris les 0 sont des colonnes vides et les autres des colonnes pleines dans l'exemple que tu as donné
0001 colonne 4 =1 ligne 1
0501 colonne 4 =5 ligne 2
6125 colonne 4 =6 ligne 3
2) Dans ton code donne des noms de variables plus parlants
Sub er()
Dim Maxlg As Integer ' max ligne (dernière ligne à tester)
Dim Maxcol As Integer 'max colonne ( dernière colonne à tester)
Dim Colonne As Integer 'debut de colonne ( première colonne à tester)
Dim Ligne As Integer 'debut de ligne ( première ligne à tester)
Dim i as integer ' pour la boucle pour chaque ligne
dim j as integer ' idem pour les colonnes
'nombre de lignes pour les champs LISTE
Sheets("LISTE").Select
Range("B23").Select
Selection.End(xlDown).Select
Maxlg = ActiveCell.Row
Colonne = 5 ' première colonne de chaque ligne à tester
Ligne = 23 ' première ligne à tester
for i = Ligne to Maxlig ' boucle pour chaque ligne
for j = Colonne to Maxcol ' pour chaque colonne à tester
if Worksheets("LISTE").Cells(i, j).Value <> "" then
' cette cellule n'est pas vide : on la copie en colonne 4
Worksheets("LISTE").Cells(i, 4).Value = Worksheets("LISTE").Cells(i, j).Value
Exit for ' on sort de la boucle des colonnes
end if
Next j
Next i
end sub
On fait une double boucle : une boucle générale pour les lignes et une boucle imbriquée pour les colonnes
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.