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 -_-

2 réponses

  1. cousinhub29 Messages postés 1157 Date d'inscription   Statut Membre Dernière intervention   409
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. 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