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
A voir également:
- Recopier une formule s'il y a des lignes
- Formule si ou - Guide
- Formule somme excel ligne - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Retour à la ligne excel formule - Guide
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
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