Recopier une cellule jusqu'à la dernière non vide et répéter

Je suis novice en VBA et j'ai enregistré une macro en pensant qu'excel comprendrait lorsque j'utilise CTRL flèche du bas cela signifiait la dernière cellule non vide malheureusement, excel conserve la range.

mon objectif est de recopier les cellules de la colonne A pour toutes les cellules vides et de recommencer tant qu'il y a une nouvelle valeur sachant que toutes les cellules de la colonne B sont remplies.

J'ai mis un fichier joint pour comprendre l'état et ce que je veux faire.

Merci de votre aide

367extract.xlsx (20.27 Ko)

Bonjour

Tu as plusieurs manière de faire ça, je t'en propose une, il y a surement mieux, mais cela fonctionne.

en VBA (je l'ai fait sous la forme d'une macro pour tester le fonctionnement) :

Sub ChercherCellVide()
Dim lastRow As Integer
'
' ChercherCellVide Macro
'
'Renvoi le numéro de la dernière ligne avec du contenu (part du bas de la feuille, dernière ligne (1 048 576) et remonte jusqu'à la première cellule avec du contenu.
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
'Boucle de la ligne 6 à la dernière ligne remplie de la colonne B
For i = 6 To lastRow
    'Si La cellule Ai est vide, Ci conserve la valeur précedente, si elle est pleine on récupère la valeur de Ai
    If Cells(i, 1).Value = "" Then
    Cells(i, 3).Value = Cells(i - 1, 3).Value
    Else:  Cells(i, 3).Value = Cells(i, 1).Value
    End If
Next i
'

End Sub

Ou avec des formules Excel

liste

S'il y a des modifications à apporter ?

merci mais en fait, j'aimerais que le fichier de sortie soit au même endroit que la colonne A, en fait pas de créer une nouvelle colonne !

Je ne sais pas si j'ai été claire.

Au même endroit que la colonne A ? Ah, tu veux en gros qu'à la place du vide entre les A, tu retrouves la dernière valeur rentrée ?

Exemple :

liste2

exactement et le mieux du mieux serait de supprimer les lignes où les cellules Fr sont vides. Merci beaucoup !

Re,

Normalement cela fonctionne, à retester.

Sub ChercherCellVide()
Dim lastRow As Integer
Dim valeur As String
'
' ChercherCellVide Macro
'
'Renvoie le numéro de la dernière ligne avec du contenu
lastRow = Cells(Rows.Count, 2).End(xlUp).Row

'Boucle de la ligne 6 à la dernière ligne remplie de la colonne B
For i = 6 To lastRow
    If Cells(i, 2).Value = "" And Cells(i, 1) <> "" Then
            valeur = Cells(i, 1).Value
            Cells(i, 1).Value = ""
    ElseIf Cells(i, 2).Value <> "" And Cells(i, 1) = "" Then
            Cells(i, 1).Value = valeur
    ElseIf Cells(i, 2).Value = "" And Cells(i, 1) = "" Then
            Cells(i, 1).Value = ""
    End If
Next i
'

End Sub

Nickel ça marche ! Merci beaucoup !

Le seul bug que j'ai trouvé, c'est si on ne pense pas à retirer les valeurs en face des FR (si on relance la macro) il conserve les anciennes valeurs, j'avoue que pendant 5 min j'ai regardé bizarrement mon écran en me disant, pourquoi tu ne veux pas prendre les nouvelles valeurs ... ^^

Rechercher des sujets similaires à "recopier derniere vide repeter"