Macro pour copier des valeurs en fonction de plusieurs critères

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 !

chris6999

XLDnaute Impliqué
Bonjour

J'ai besoin de l'aide du forum pour écrire une macro pour laquelle mes connaissances en VB ne sont malheureusement pas suffisantes.

Je souhaiterais faire la chose suivante :

A partir de la ligne 15 pour toutes lignes où A n'est pas vide, si dans la colonne C la cellule au dessus est non vide, recopier la valeur de la colonne A (de la même ligne) sur toutes les cellules en dessous (toujours dans la colonne C) jusqu'à trouver une cellule non vide.

Exemple si C14 non vide recopie la valeur de $A$14 dans C15, C16, C17, C18)
Puis comme C19 non vide recopie la valeur de $A$19 dans C20, C21)
Etc jusqu'à ce que les lignes aient été toutes balayées (la macro doit s'arrêter dès que la colonne A est vide)

Pour mieux présenter ma demande e joins un fichier explicatif.

J'espère qu'une bonne âme pourra trouver une solution à ce casse tête.
Merci d'avance
Cordialement
Chris6999
 

Pièces jointes

Re : Macro pour copier des valeurs en fonction de plusieurs critères

Bonjour.
Je propose comme ça :
VB:
Sub Macro1()
Dim Plage As Range
Set Plage = Range(ActiveSheet.Rows(15), ActiveSheet.[A14].End(xlDown))
With Plage.Columns("J")
    .FormulaR1C1 = "=IF(ISBLANK(RC3),IF(ISBLANK(R[-1]C3),R[-1]C,R[-1]C1),RC3)"
    Plage.Columns("C").Value = .Value
    .ClearContents
    End With
End Sub
 
Re : Macro pour copier des valeurs en fonction de plusieurs critères

Bonjour

Merci DranReb
Cela fonctionne parfaitement


Pourrais tu me commenter le code .FormulaR1C1 = "=IF(ISBLANK(RC3),IF(ISBLANK(R[-1]C3),R[-1]C,R[-1]C1),RC3)"
Je souhaiterais l'adapter à une autre cas en l'occurrence :

Toujours à partir de la ligne 15 si cellule C vide copier la valeur de la cellule C au dessus (au lieu de la valeur dans A) jusqu'à trouver une ligne où la cellule de la colonne C n'est pas vide

Merci encore
Bon après midi
 
Re : Macro pour copier des valeurs en fonction de plusieurs critères

Cela installe temporairement en colonne J une formule (je l'ai fait engendrer par l'enregistreur de macro) qui, si les 2 cellules de la colonne C de cette ligne et celle d'au dessus sont vides, reprend la valeur trouvée par cette même formule juste au dessus. Si seule la cellule de la colonne C de cette ligne est vide elle reprend la valeur en colonne A de la ligne d'au dessus. Enfin bien sûr elle reproduit la valeur en colonne C si elle n'est pas vide. Pour voir la formule mettre en commentaire le .ClearContents
 
Re : Macro pour copier des valeurs en fonction de plusieurs critères

Re

Je ne savais pas qu'on pouvait enregistrer une fonction.
C'est génial!
J'ai essayé de mettre mes deux codes à la suite mais ça passe pas..

Dim Plage As Range
Set Plage = Range(ActiveSheet.Rows(15), ActiveSheet.[A14].End(xlDown))
With Plage.Columns("J")
.FormulaR1C1 = "=IF(ISBLANK(RC3),IF(ISBLANK(R[-1]C3),R[-1]C,R[-1]C1),RC3)"
Plage.Columns("B").Value = .Value

.FormulaR1C1 = "=IF(ISBLANK(RC3),IF(ISBLANK(R[-1]C3),R[-1]C,R[-1]C1),RC3)"
Plage.Columns("B").Value = .Value

.ClearContents
End With
End Sub

Pourtant j'ai recopié ta formule en l'adaptant mai rien à faire
Ne peut-on pas coller les deux frmules à la suite?

Merci d'avance
 
Re : Macro pour copier des valeurs en fonction de plusieurs critères

Comme ça si j'ai bien compris :
VB:
Sub Macro1()
Dim Plage As Range
Set Plage = Range(ActiveSheet.Rows(15), ActiveSheet.[A14].End(xlDown))
Plage.Columns("J").FormulaR1C1 = "=IF(ISBLANK(RC3),IF(ISBLANK(R[-1]C3),R[-1]C,R[-1]C3),"""")"
Plage.Columns("K").FormulaR1C1 = "=IF(ISBLANK(RC3),IF(ISBLANK(R[-1]C3),R[-1]C,R[-1]C1),RC3)"
With Plage.Columns("J:K")
   Plage.Columns("B:C").Value = .Value
   .ClearContents
   End With
End Sub
 
- 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

Réponses
20
Affichages
946
Retour