Salut à tout le forum d'Excel Downloads.
Je voudrais concatener 3 cellules dans une seule (en rajoutant un espace+tiret+espace ( - ) entre chaque mention) sur toutes les lignes d'une feuille (Quelquefois des dizaines de lignes). je sais faire par formule mais la recopie est fastidieuse car une fois concatené, j'utilise le résultat dans une autre feuille puis j'efface les données en attendant une autre utilisation. Donc je recherche la manière de le faire en vba.
Je joint un petit fichier.
Merci d'avance pour les réponses que j'aurais.
Sub Concatener()
With ActiveSheet.UsedRange
.Columns(4) = "=RC[-3]&"" - ""&RC[-2]&"" - ""&RC[-1]"
.Columns(4) = .Columns(4).Value 'supprime les formules
End With
End Sub
Salut zebanx, salut job75.
Tout d'abord, merci pour votre rapidité à répondre. Vos propositions me conviennent parfaitement (les deux fonctionnent) mais je pense que je vais utiliser la macro car il me suffit de créer un bouton sur la feuille et tout se fait très rapidement (Y compris l'effacement).
Rebonjour au forum et en particulier à job75 qui m'a donné une réponse que j'applique mais après utilisation en fichier réel et sur des colonnes plus importantes, je me suis aperçu que la macro continue à écrire ( - - ) en colonne D, à la suite des données alors qu'il n'y a plus rien en colonnes A, B et C. Y a t-il un remède ?
NB : il ne s'agit pas d'un reliquat de la manipulation précédente car j'efface la feuille entière après concatenation.
Sub Concatener()
With ActiveSheet.UsedRange
.Columns(4) = "=RC[-3]&REPT("" - ""&RC[-2],RC[-2]<>"""")&REPT("" - ""&RC[-2],RC[-2]<>"""")"
.Columns(4) = .Columns(4).Value 'supprime les formules
End With
End Sub
Pour voir - et comprendre - les formules ne les supprimez pas.
Cela a l'air de fonctionner. Je ferais plusieurs essais demain.
Mais au fait, pourquoi la fonction rept alors que ton premier code ne l'utilisais pas ?