Remplir automatiquement une case vide par la case du dessus


#1

Re,
Compte tenu de votre brillante solution sur le sujet précédent, j’abuse en vous en soumettant un nouveau :
Comment faire pour que Excel complète automatiquement une cases vide par les données de la case du dessus.
Ainsi dans le fichier joint que les cases A4 et B4 soient automatiquement remplies par les données des cases A3 et B3.
Puis que les cases A5 et B5 soient automatiquement remplies par les données des cases A4 et B4 et ainsi de suite…
Exemple fichier 2.xlsx (13,2 Ko)
D’avance merci


#2

Bonjour @Spiced,

Une proposition par macro VBA, ne voyant pas de solution par formule Excel.

Dans l’onglet 1 “Développeur” ==> 2 “Visual Basic” ==> 3 Insertion ==> 4 Module 1
5 Écrire le code VBA.

Le Code:

Option Explicit
Sub Compléter_Cellules_vides()

Dim c As Range

Application.ScreenUpdating = False

     For Each c In Range("C:C").SpecialCells(xlCellTypeConstants)
         If c.Offset(, -1) = "" Then c.Offset(, -1) = c.Offset(-1, -1)
         If c.Offset(, -2) = "" Then c.Offset(, -2) = c.Offset(-1, -2)
     Next
     
End Sub

Cliquer sur le bouton "Compléter cellules Vides"
Pour déplacer le bouton, appuyer sur “ctrl” et cliquer dans le bouton, puis se déplacer sur le bord et avec la petite croix déplacer le bouton.

Important enregistrer le fichier en xlsm prenant en charge les macros.

Voici le fichier en retour ICI==> Spiced V1.xlsm (21,3 Ko)

Cela convient-il ?

Cordialement.


#3

Génial !
Peux-tu nous expliquer concrètement ce que tu as demandé à la macro de faire ?

PS : Sur ton 2ème capture d’écran, peux-tu faire disparaitre mon nom ?! D’avance merci


#4

Re @Spiced,

En gros si dans la colonne “C” il y a une valeur et que dans le même temps il n’y a pas de cellule vide dans les colonnes “A & B” alors on fait rien, si des cellules sont vides alors on copie les cellules du dessus dans les colonnes “A & B”.

2ème capture écran “Fait”.

Cordialement.


#5

Petite question :
Si on a 3 cases à copier, alors il faut ajouter cette ligne à la macro ?

If c.Offset(, -3) = “” Then c.Offset(, -3) = c.Offset(-1, -3)


#6

Bonjour @Spiced,

Oui c’est exactement ça, si on insert une colonne avant la colonne “C”, mais dans ce cas, il ne faut pas oublier de modifier cette ligne:

For Each c In Range(“C:C”).SpecialCells(xlCellTypeConstants)

En:

For Each c In Range(“D:D”).SpecialCells(xlCellTypeConstants)

Si on ajoute un colonne après la colonne “C”, dans ce cas ne pas modifier la ligne:

For Each c In Range(“C:C”).SpecialCells(xlCellTypeConstants)

Et donc écrire:

If c.Offset(, 1) = “” Then c.Offset(, 1) = c.Offset(-1, 1)

Dans tous les cas, ne pas oublier de mettre un titre en début de la nouvelle colonne.

Cordialement.