Utilisation de Offset dans une boucle

  • Initiateur de la discussion Initiateur de la discussion rudolphe
  • 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 !

rudolphe

XLDnaute Nouveau
Bonjour
J'ai une plage de cellules ("A1:H1") '
et juste en dessous une autre plage ("A2:H2")
Je voudrai qu'une boucle parcourt la plage ("A2:H2") et lorsqu'elle lorsqu'elle rencontre une cellule vide
elle copie la valeur située juste au dessus et la colle .
dit autrement si A2 est vide alors copier A1 en A2 si A2 n'est pas vide , ne rien faire
et ainsi de suite avec B2, C2...........jusqu'à H2

Mon début de code

Sub boucle()

Dim ruru As Range
For Each ruru In Range("A2:H2")
If ruru.Value = "" Then
ActiveCell.Offset(-1,0).Select
Selection Copy
Active sheet .Paste
End If

Next ruru

End Sub

Et ça marche pas!

Merci à vous
Rudolphe
 
Bonjour rudolphe

Une proposition au plus simple, mais pas au plus rapide pour une grande quantité de cellules.
VB:
Sub ruru_2()
Dim i&, j& 'deux variables type Long pour les boucles
Dim Ligne& ' une variable pour la dernière ligne remplie

With Sheets("Feuil1") 'Nom de feuille à adapter
    'on trouve la ligne de la dernière cellule remplie de la feuille
    'Si tu connais la ligne (X) tu mets Ligne = X
    Ligne = .Cells.Find("*", .Cells(.Rows.Count, .Columns.Count), xlValues, , 1, 2, 0).Row
    For i = 2 To Ligne 'pour chaque ligne
        For j = 1 To 8 'pour les colonnes de A à H
            'Si la cellule ligne i colonne J est vide, on la remplie avec la valeur de la cellule au-dessus (ligne i-1
            If Cells(i, j).Value = "" Then Cells(i, j).Value = Cells(i - 1, j).Value
        Next j 'prochaine colonne
    Next i 'Prochaine ligne
End With
End Sub
Cordialement
 
Bonjour rudolphe

Une proposition au plus simple, mais pas au plus rapide pour une grande quantité de cellules.
VB:
Sub ruru_2()
Dim i&, j& 'deux variables type Long pour les boucles
Dim Ligne& ' une variable pour la dernière ligne remplie

With Sheets("Feuil1") 'Nom de feuille à adapter
    'on trouve la ligne de la dernière cellule remplie de la feuille
    'Si tu connais la ligne (X) tu mets Ligne = X
    Ligne = .Cells.Find("*", .Cells(.Rows.Count, .Columns.Count), xlValues, , 1, 2, 0).Row
    For i = 2 To Ligne 'pour chaque ligne
        For j = 1 To 8 'pour les colonnes de A à H
            'Si la cellule ligne i colonne J est vide, on la remplie avec la valeur de la cellule au-dessus (ligne i-1
            If Cells(i, j).Value = "" Then Cells(i, j).Value = Cells(i - 1, j).Value
        Next j 'prochaine colonne
    Next i 'Prochaine ligne
End With
End Sub
Cordialement

Çà marche du tonner !
Merci Efgé
 
- 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

Discussions similaires

Réponses
12
Affichages
976
Réponses
4
Affichages
205
Réponses
14
Affichages
476
Retour