Recopier une formule s'il y a des lignes

Fermé
catsides Messages postés 3 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 26 avril 2014 - 13 août 2008 à 10:18
 Catsides - 25 août 2008 à 15:15
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

2 réponses

LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
13 août 2008 à 15:03
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
0
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
0