Faire recopier sur plusieurs cellules le contenu de la cellule du dessus

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bertrand19

XLDnaute Nouveau
Bonjour le forum

Voila, j'ai un petit problème...
J'ai quelques personnes qui ne prennent pas le temps d'écrire dans toutes les cellules. ils me restent donc des blancs

Je souhaiterais pouvoir copier le contenu de L1C1 en L2C1 et L3C1, le contenu de L4C1 en L5C1, L6C1 et ainsi de suite....(voir le tableau en dessous)
Bien evidemment, le nombre de ligne est variable!!!!

C1 C2
L1 ROUEN 193
L2
L3
L4 REIMS 207
L5
L6
L7
L8 LYON 444
L9

j'ai essayé de ruser en enregistrant une macro, mais celle-ci retient le range réel (ex:Range("A2:A27").Select)

Selection.End(xlDown).Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Range("A2:A27").Select
ActiveSheet.Paste
Range("A3").Select
Selection.End(xlDown).Select
Application.CutCopyMode = False
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Range("A28:A53").Select
ActiveSheet.Paste


Merci pour votre coup de pouce
 
Re : Faire recopier sur plusieurs cellules le contenu de la cellule du dessus

Bonjour bertrand19.
Problème classique... Essayez les procédures REMPLIT_TOUT_SEUL() et VIDE_TOUT_SEUL() de la première feuille du classeur joint et dites-moi si cela vous convient.​
À plus tard,
ROGER2327

CORRECTION
Le code correct à placer dans la première feuille est :
Code:
Option Explicit

Sub REMPLIT_TOUT_SEUL()
Dim i As Long
Dim DAT
    With Me
        DAT = .Cells(1, 1).CurrentRegion.Value
        For i = 2 To UBound(DAT, 1)
            If IsEmpty(DAT(i, 2)) Then DAT(i, 2) = DAT(i - 1, 2)
        Next i
        .Range(.Cells(1, 1), .Cells(1, 1).Offset(UBound(DAT, 1) - 1, UBound(DAT, 2) - 1)).Value = DAT
    End With
End Sub


Sub VIDE_TOUT_SEUL()
Dim i As Long
Dim DAT
    With Me
    DAT = .Cells(1, 1).CurrentRegion.Value
        For i = UBound(DAT, 1) To 2 Step -1
            If DAT(i - 1, 2) = DAT(i, 2) Then DAT(i, 2) = Empty
        Next i
        .Range(.Cells(1, 1), .Cells(1, 1).Offset(UBound(DAT, 1) - 1, UBound(DAT, 2) - 1)).Value = DAT
    End With
End Sub
Quand on veut aller trop vite, on perd du temps...
 

Pièces jointes

Dernière édition:
Re : Faire recopier sur plusieurs cellules le contenu de la cellule du dessus

Bonjour, la macro fonctionne à partir de votre fichier. (et je vous avoue que je ne la comprends pas)


Cependant, quand je la mets dans le mien, il me dit
"utilisation incorrecte du mot clef me"

je précise par ailleurs que mon tableau fait environ 6000 lignes, est ce que cela change qqch???

Merci
 
Re : Faire recopier sur plusieurs cellules le contenu de la cellule du dessus

À bertrand19 :
Les procédures que j'ai écrites sont des procédures destinées à une feuille du tableur. Le mot clé me ne pose dès lors aucun problème. Bien entendu, si vous portez le code de ces procédures de feuille dans un module quelconque, vous décidez vous-même de créer des problèmes. S'il s'agit de traiter non pas une feuille particulière mais n'importe quel champ de n'importe quelle feuille d'un classeur, il est clair que la réponse que je vous ai faite est inadaptée. Je dis que ce que je vous propose répond au problème que vous posez, pas plus, mais pas moins. Si vous voulez traiter un autre problème, dites-le clairement.
la macro fonctionne à partir de votre fichier. (et je vous avoue que je ne la comprends pas)


Cependant, quand je la mets dans le mien, il me dit
"utilisation incorrecte du mot clef me"
Oui, la macro fonctionne dans mon classeur. Et elle fonctionnera dans n'importe quelle feuille d'un classeur dans laquelle on trouvera dans la première colonne une série de valeurs non-vides et dans la deuxième colonne une série de valeurs pouvant quelquefois être vides.Quand vous la mettez dans le vôtre, elle ne fonctionne plus, dites-vous. Mais la mettez-vous ? Si vous la mettez dans une feuille qui correspond à la description faites plus haut, je vous garantis qu'elle fonctionnera encore. Je vous propose donc de publier le classeur que vous voulez traiter et de dire exactement ce que vous souhaitez obtenir. Pour ce qui est de la compréhension du code je suis prêt à répondre précisément dès lors que je sais sur quoi je dois préciser : quelle ligne, quelle commande ou instruction ?​
Le problème que vous posez étant un problème très courant dans la pratique, il mérite d'être traité le plus précisément possible. C'est pourquoi je souhaite vraiment que vous communiquiez votre fichier réel et le résultat réellement escompté.​
À bientôt j'espère.
ROGER2327
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour