Résolu VBA EXCEL : Recopier contenu prochaine cellule non vide + boucle

damienlacroix.dt

Nouveau membre
Bonjour,
Novice en VBA... enfin plus tant que ça mais je m'en sert à intervalle tellement irrégulières que les reprises sont difficiles !
Aprés 48h de recherche, je sollicite l'aide des plus aguerris.

J'ai un fichier avec
A nom produit
B quantité
C Client
et de manière aléatoire
Ligne 1 intitulé colonne
Ligne 2 sac / 1 / ""
Ligne 3 bijoux / 2 / ""
Ligne 4 "" / "" / Nom d'un client

Je souhaite avoir en ligne C2 et C3 le nom du client présent en C4
Évidemment la liste est longue et le nombre de lignes entre chaque client différente.
D'avance merci, et bonne journée.

PS : J'ai ce code mais il fonctionne à l'envers de ce que je souhaite...

Dim lastRow As Integer

lastRow = Cells(Rows.Count, 3).End(xlDown).Row

For i = 2 To lastRow

If Cells(i, 3).Value = "" Then
Cells(i, 3).Value = Cells(i - 1, 3).Value
Else: Cells(i, 3).Value = Cells(i, 3).Value
End If
Next i
 

drul

Obscur pro du hardware
Staff
Salut rien de très compliqué en effet.

Quelques petites erreurs dans ton code:
il faut chercher la dernière cellule vers le haut et non vers le bas (xlDown --> xlUp)
il faut faire la boucle "à l'envers" (du bas vers le haut), et finalement il faut prendre la valeur de ligne en dessous et non en dessus !
ce qui donne:

Code:
Dim lastRow As Long 'depuis excel 2007, un integer ne suffit plus pour compter les lignes ...
Dim i As Long 'Quitte à déclarer tes variables, déclare les toutes ...

lastRow = Cells(Rows.Count, 3).End(xlUp).Row

For i = lastRow To 2 Step -1
  If Cells(i, 3).Value = "" Then
    Cells(i, 3).Value = Cells(i + 1, 3).Value
  End If
Next i
Pas tester, mais ça devrait le faire
 

damienlacroix.dt

Nouveau membre
Meilleure réponse

Merci de cette réponse aussi rapide, j'ai trouvé une solution juste après le post, c'est en effet simple !
Voici ce qui fonctionne dans mon cas en espérant que je l'avais énoncé clairement.

For i = Range("J65535").End(xlUp).Row To 3 Step -1
If Cells(i - 1, 10) = "" Then
Cells(i - 1, 10) = Cells(i, 10)

End If
Next i


 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 121
Membres
1 586 398
Dernier membre
mookie767
Partager cette page
Haut