Ecrire le texte de la cellule du dessus si la cellule est vide

Bonjour,

Je souhaiterais si possible, bien évidemment, que dans une cellule cela écrive, si elle est vide, le texte du dessus ou sinon écrire ce que je veut et ainsi de suite.

Je pense que cela ne peut se faire qu'avec un macro si c'est la cas je ne suis pas opposé à ce que l'on m'explique comment ça marche.

Merci par avance pour vos réponses.

Bonjour,

Un exemple via une boucle toute simple, où 9 peut être rendu dynamique via .Cells(.Rows.Count, 1).End(xlUp).Row :

Sub RECOPIE()
Dim L As Byte
With ActiveSheet 'Avec la feuille active
    For L = 1 To 9 'Pour les lignes 1 à 9
        If .Cells(L, 1) = "" Then .Cells(L, 1) = .Cells(L, 1).Offset(-1) 'Si la cellule de la première colonne à la ligne L est vide alors sa valeur devient la cellule de la première colonne à la ligne L-1
    Next L 'Passe au L suivant
End With
End Sub

Je reste dispo s'il vous faut plus d'explication. On peut aussi passer par un FillDown qui est la recopie vers le bas.

Cdlt,

4classeur1.xlsm (13.82 Ko)

Très bien merci beaucoup est il possible de m'expliquer comment le mettre en place en pratique je débute sur excel donc je ne sais pas utiliser les macro je comprend le principe mais ça s'arrête là.

Bonjour,

Regardez le classeur que j'ai joint, faites sur votre clavier ALT + F11, vous arrivez sur le développeur VBA et regarder dans le menu de gauche, vous avez un objet qui s’appelle Module 1. Le code est dedans

image

Ensuite il vous suffit de lier cette macro à une forme sous EXCEL et le tour est joué :

image

Cdlt,

Très bien merci beaucoup je vais essayer ça si je n'y arrive pas je reviens vers vous.

Derniere question comment je dit que c'est sur c'est cellule la que doit s'appliquer le macro ?

Je ne comprend pas comment le rajouter dans mon tableur Excel j'ai bien ouvert le développeur VBA mais je ne sais pas quoi faire après désole.

Bonjour,

Cliquez droit dans la fenêtre de la zone 1 > Insertion > Module. Double cliquez sur Module 1 et collez le code dans la zone 2, enregistrez puis suivez mes captures d'écran.

Si vous avez plus de 255 lignes à traiter, changer le Dim L as Byte par Dim L as Integer.

Cdlt,

Tres bien cela fonctionne parfaitement merci beaucoup,

Est il possible de rajouter une fonction qui permettrai d'actualisé les lignes du dessous quand on modifie le texte d'une cellule et aussi que si la cellule en B de la même ligne est vide cela ne remplie pas la cellule.

Merci par avance.

Solution trouver

Sub RECOPIE()
Dim L As Byte
With ActiveSheet 'Avec la feuille active
For L = 1 To 254 'Pour les lignes 1 à 254
If .Cells(L, 1) = "" And .Cells(L, 2) <> "" Then .Cells(L, 1) = .Cells(L, 1).Offset(-1) 'Si la cellule de la première colonne à la ligne L est vide et la cellule de la deuxième colonne à la ligne L est pleine alors sa valeur devient la cellule de la première colonne à la ligne L-1
Next L 'Passe au L suivant
End With
End Sub

Bonjour,

Je revient vers vous car j'ai atteint les capacité de cette MACRO car j'ai mais les lignes de 1 à 254 comme cible car sinon je Excel me mets un message me disant sue je dépasse la capacité de calcul sauf que j'ai plus de 254 lignes donc je suis bloquer et si je mets 2 à 255 cela me mets le même message je ne comprend donc pas comment contourner cette erreur. Avez vous une idée ?

Bonjour Dr.Excel, Salut Ergotamine ,

La réponse a déjà été donnée sur le fil : https://forum.excel-pratique.com/excel/ecrire-le-texte-de-la-cellule-du-dessus-si-la-cellule-est-vid...

Il faut changer le type de la variable L : dim L as integer, voire dim L as long.

D'ailleurs, si votre nombre de lignes évolue sans cesse, il faudrait le variabiliser :

Sub RECOPIE()
Dim L As long, dl as long
With ActiveSheet 'Avec la feuille active
    dl = .cells(.rows.count, 2).end(xlup).row 'derniere ligne non vide en colonne 2
    For L = 1 To dl 'Pour les lignes 1 à dl
        If .Cells(L, 1) = "" And .Cells(L, 2) <> "" Then .Cells(L, 1) = .Cells(L, 1).Offset(-1) 'Si la cellule de la première colonne à la ligne L est vide et la cellule de la deuxième colonne à la ligne L est pleine alors sa valeur devient la cellule de la première colonne à la ligne L-1
    Next L 'Passe au L suivant
End With
End Sub

Cdlt,

tres bien merci pour l'astuce ça ma bien aidé

Rechercher des sujets similaires à "ecrire texte dessus vide"