Recopier une formule s'il y a des lignes
catsides
Messages postés
4
Statut
Membre
-
Catsides -
Catsides -
Bonjour,
J'ai un fichier Excel qui contient 3 colonnes d'informations descriptives. Je souhaiterais concaténer ces 3 colonnes pour n'en faire qu'une seule et supprimer les 3 colonnes d'origines. J'arrive très bien à faire cette macro avec les fonctions classique d'Excel. Le code généré est le suivant :
Sub concatener()
'
' concatener Macro
Columns("AE:AE").Select
Selection.Insert Shift:=xlToRight
ActiveCell.FormulaR1C1 = "Description"
Range("AE6").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-3],"" "",RC[-2],"" "",RC[-1])"
Range("AE6").Select
Selection.AutoFill Destination:=Range("AE6:AE22"), Type:=xlFillDefault
Range("AE6:AE2200").Select
Columns("AB:AD").Select
Selection.EntireColumn.Hidden = True
End Sub
Le seul souci qui persiste, est que ce fichier, suivant la sélection qui est fait à l'entrée, peut avoir 5 lignes ou 10 lignes. Je souhaiterais que la macro soit automatiquement exécutée (et donc la formule recopiée) sur le nombre de ligne affichée.
Ave-vous une idée ? Je pense que je dois compter le nombre de ligne et recopier la formule sur le nombre de ligne affichée dans la nouvelle colonne.
Merci d'avance de votre aide.
Catherine
J'ai un fichier Excel qui contient 3 colonnes d'informations descriptives. Je souhaiterais concaténer ces 3 colonnes pour n'en faire qu'une seule et supprimer les 3 colonnes d'origines. J'arrive très bien à faire cette macro avec les fonctions classique d'Excel. Le code généré est le suivant :
Sub concatener()
'
' concatener Macro
Columns("AE:AE").Select
Selection.Insert Shift:=xlToRight
ActiveCell.FormulaR1C1 = "Description"
Range("AE6").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-3],"" "",RC[-2],"" "",RC[-1])"
Range("AE6").Select
Selection.AutoFill Destination:=Range("AE6:AE22"), Type:=xlFillDefault
Range("AE6:AE2200").Select
Columns("AB:AD").Select
Selection.EntireColumn.Hidden = True
End Sub
Le seul souci qui persiste, est que ce fichier, suivant la sélection qui est fait à l'entrée, peut avoir 5 lignes ou 10 lignes. Je souhaiterais que la macro soit automatiquement exécutée (et donc la formule recopiée) sur le nombre de ligne affichée.
Ave-vous une idée ? Je pense que je dois compter le nombre de ligne et recopier la formule sur le nombre de ligne affichée dans la nouvelle colonne.
Merci d'avance de votre aide.
Catherine
Configuration: Windows XP Internet Explorer 7.0
2 réponses
-
J'ai modifié le principe: Au lieu de faire une recopie, je lui demande de tester la cellule AB avant de concaténer et de passer à la ligne d'en dessous, et de s'arrêter si elle est vide:
Columns("AE:AE").Select
Selection.Insert Shift:=xlToRight
ActiveCell.FormulaR1C1 = "Description"
Range("AE6").Select
While ActiveCell.Offset(0,-3).value <>""
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-3],"" "",RC[-2],"" "",RC[-1])"
ActiveCell.Offset(1,0).Select
Wend
Columns("AB:AD").Select
Selection.EntireColumn.Hidden = True -
Bonjour,
Je te remercie pour ta réponse.
J'ai finalement réussi à copier le code d'une autre façon, j'ai réutilisé une ancienne macro qui n'utilise pas la fonction concatenate mais additionne le contenu de chacune des cellules.
A+
Catherine