Remplissement copie cellules colonnes remplies aléatoirement

Résolu
Polorskitoch -  
 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 -_-

A voir également:

2 réponses

cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
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
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
0
Polorskitoch
 
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!
0