Remplissement copie cellules colonnes remplies aléatoirement [Résolu/Fermé]

Signaler
-
 Polorskitoch -
Bonjour à tous,

Encore une difficulté s'offre à moi, moi qui ne suis qu'un pauvre noob ayant commencer à apprendre le VBA il y a 3 jours. Mon problème est le suivant:


J'ai une colonne (admettons la colonne V) qui ressemble à cela (j'ai mis des crochets pour représenter les cellules):

[ ]
[ ]
[ ]
[ George ]
[ Marie ]
[ Anais ]
[ ]
[ ]
[ Eric ]
[ ]
[ ]
[ Michel ]


J'aimerais obtenir après lancement de la macro le résultat suivant:

[ George ]
[ George ]
[ George ]
[ George ]
[ George ]
[ George ]
[ Eric ]
[ Eric ]
[ Eric ]
[ Michel ]
[ Michel ]
[ Michel ]


En gros ça parcoure les cellules de la colonne, ça repère la première cellule pleine qu'il rencontre, en enregistre la valeur dans une variable.

Puis, ça recopie le contenu de la variable jusqu'au premier vide rencontré après l'ensemble de cellules pleines (d'où est issu le contenu de la variable).

Et ça recommence, et ainsi de suite jusqu'à avoir compléter tout la colonne.


Là ça va faire 2 heures que je planche dessus, je n'arrive pas à trouver -_-

2 réponses

Messages postés
579
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
11 novembre 2018
283
Bonsoir,

si je comprends bien (mais ça, c'est pas donné...), tu ne veux pas garder "Marie" ni "Anais", vu qu'il n'y a pas de cellules vides au-dessus?

Si c'est bien cela, tu pourrais commencer par insérer une formule dans les cellules vides, style (dans la cellule V3) :

=V4

Puis remplacer les formules par les valeurs (copier/collage spécial "Valeurs"), et 1 fois toutes les cellules vides remplies, supprimer les cellules uniques, en commençant par le bas...

Ceci pourrait être l'algo, cependant, comme j'ai commencé par le dire, pas sûr que j'ai tout saisi....

bon courage
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284
Bonsoir,

en supposant que "Marie" et "Anais" soient un oubli :
Sub completer()
    Dim lig As Long, derlig As Long, nom As String
    derlig = Cells(Rows.Count, 1).End(xlUp).Row ' n° dernière ligne remplie de colonne 1 (A)
    For lig = derlig To 2 Step -1 ' boucle de la dernière ligne à la ligne 2
        If Cells(lig, 1) = "" Then
            Cells(lig, 1) = nom
        Else
            nom = Cells(lig, 1)
        End If
    Next lig
End Sub

ex : https://www.cjoint.com/?DBicxu7S1hu

eric
Merci à vous deux pour votre aide!

Ton code fait parfaitement l'affaire Eric, il m'a suffit seulement des quelques modifications pour que ça fasse ce que je voulais, merci encore!