Macro Concatener cellule

leina_33

XLDnaute Nouveau
Bonjour,

je parcours désespérement le forum à la recherche de la solution à mon problème (et je suis sure qu'il doit y avoir quelque chose qui ressemble à ce dont j'ai besoin) mais rien à faire, je n'arrive pas à adapter à mon besoin.

Je m'explique.

Je veux créer une macro que je veux mettre dans mon classeur de macro personelles pour Concatener 3 données ensemble, à savoir Modele, Coloris, Taille dans la cellule A de la ligne correspondante.
C'est une opération que je dois effectuer au moins 30 fois par jour et j'en ai ras le bol.Le probleme c'est qu'en fonction de mes tableaux, les colonnes avec ces données ne sont pas toujours au meme endroit.
Je souhaite également que lorsque je lance ma macro ca me remplisse toute la colonne A.

J'ai donc eu l'idée de faire avec un userform et des refedit. (mais c'est peut etre pas du tout ce qu'il faut prendre) et là, je suis larguée :D

Je vous joins ce que j'ai fait pour le moment mais apres je sais plus quoi faire, j'y comprends rien, j'essaie de bricoler et ca ne marche pas.

Merci de votre aide
 

Pièces jointes

  • concatener.xlsm
    15.5 KB · Affichages: 104
  • concatener.xlsm
    15.5 KB · Affichages: 105
  • concatener.xlsm
    15.5 KB · Affichages: 109
G

Guest

Guest
Re : Macro Concatener cellule

Bonjour,

une de mes fonctions personnelles:
Code:
Function hConcatener(Plage As Range, Optional strSep As String = ";")
    'Hasco à 
    'Si la plage à plus de ligne que de colonne
    'traiter que la première colonne
    If Plage.Rows.Count > Plage.Columns.Count Then
        hConcatener = Join(Application.Transpose(Plage.Columns(1)), strSep)
    Else
    'sionon traiter la première ligne
        hConcatener = Join(Application.Transpose(Application.Transpose(Plage.Rows(1))), strSep)
    End If
End Function

Mettre en A2 :
Code:
=hConcatener(B2:D2)
A tirer vers le bas
Si tu ne veux pas de séparateur entre les chaines:
A2 =
Code:
=hConcatener(B2:D2;"")
Ou un point virgule ou autre caractère
A2=
Code:
=hConcatener(B2:D2;";")

A+

[Edit] pas vu Pierre-Jean:)
 
Dernière modification par un modérateur:

leina_33

XLDnaute Nouveau
Re : Macro Concatener cellule

merci de prendre le temps.

Pierrejean,
L'idée est là mais il faut que lorsque je clique sur "selectionner les cellules ..." cela me renseigne toute la colonne A. (mes fichiers font plus de 30 000 lignes)

Hasco,

Euh ... j'ai pas compris
 

pierrejean

XLDnaute Barbatruc
Re : Macro Concatener cellule

Re

Autre version donc

NB: Si tu as plusieurs feuilles l'usF pourra servir sur chacune d'elles (USF dont Showmodal a False)

Edit Salut ami Hasco :) :) :)
 

Pièces jointes

  • concatener.xlsm
    26.5 KB · Affichages: 101
  • concatener.xlsm
    26.5 KB · Affichages: 101
  • concatener.xlsm
    26.5 KB · Affichages: 106
Dernière édition:

leina_33

XLDnaute Nouveau
Re : Macro Concatener cellule

Bonjour à tous,

me revoilà toujours sur le meme sujet.
Je me suis servie de vos explications pour faire d'autres choses mais je n'ai pas réussi à faire ce que je voulais pour mon concatener.
Merci beaucoup de votre aide.

J'ai continué à chercher une solution et j'en suis là. (voir code ci dessous)
Mais bon là je suis plantée depuis 3 jours.
Je suis pas tres copine avec les variables. (ce qui est tres ennuyeux pour faire de la programmation mais je ne desespere pas, un jour nous nous comprendrons elles et moi)

Mes variables renvoient bien la bonne cellule sous la bonne synthaxe (C2 et non avec des $ partout)
Mais au lieu d'avoir "ModeleCColorisTaille" en A2, j'ai "#NOM?"

Quelqu'un aurait-il une idée ???

Merci

Code:
Sub Macro3()


Dim Modele As String
Dim CColoris As String
Dim Taille As String
    
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "SKU"
    
    Cells.Find(What:="modele", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        ActiveCell.Offset(1, 0).Range("A1").Select
        Modele = ActiveCell.Address(0, 0)
    Cells.Find(What:="code_coloris", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        ActiveCell.Offset(1, 0).Range("A1").Select
        CColoris = ActiveCell.Address(0, 0)
        Cells.Find(What:="taille", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        ActiveCell.Offset(1, 0).Range("A1").Select
        Taille = ActiveCell.Address(0, 0)
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(Modele,CColoris,Taille)"
   
   
End Sub
 
G

Guest

Guest
Re : Macro Concatener cellule

Bonjour,

Brut de décoffrage: ActiveCell.FormulaR1C1 = "=CONCATENATE(" & Modele & "," & CColoris & "," & "Taille)"

Mais on ne voit pas bien ce que tu cherches et veux obtenir,si c'est en rapport avec ton fichier du post 1, je doute de l' éfficacité de la chose.

A+

A+
 

leina_33

XLDnaute Nouveau
Re : Macro Concatener cellule

La solutionde PierreJean est presque ce qu'il me faut mais comme certains des fichiers que l'on utilise ont plus de 36 colonnes, le temps de chercher la colonne correspondante dans la liste déroulante est plus long que celui de taper la formule à la main.

En piece jointe un exemple.

1) je veux rajouter une colonne en A avec pour chaque ligne de mon tableau un concatener de "Modele" "code_coloris" et "taille". (sans espace, tiret, ou quelque signe que ce soit. Il faut du texte brut)

2) J'ai des dizaine de tableaux avec le meme type de données mais pas dans le meme ordre. J'ai donc besoin que ma macro cherche toute seule ou sont les colonnes "Modele", "code_coloris" et "taille" dans les entetes de colonne (c'est toujours écrit de la meme facon)

Le but est de mettre ma macro dans mon classeur personnel (et celui de mes collègues) et sur simple lancement via un bouton du ruban que cela rajoute ma colonne et mes données correspondantes.

Avec ta macro, le résultat en A2 est =CONCATENER('F2';'H2';Taille)
Avec ma macro, le résultat en A2 est =CONCATENER(Modele;CColoris;Taille)

Ce que je veux c'est =CONCATENER(F2,H2,I2)

Je vais devenir Maboul ....
 

Pièces jointes

  • macro_concatener.xlsm
    19.6 KB · Affichages: 59

JNP

XLDnaute Barbatruc
Re : Macro Concatener cellule

Bonjour le fil :),
A tester :
Code:
Sub ajout_colonne_SKU()
Dim Modele As Range, CColoris As Range, Taille As Range, DerLigne As Integer, I As Integer
DerLigne = Range("A" & Rows.Count).End(xlUp).Row
Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1") = "SKU"
Set Modele = Range("1:1").Find(What:="Modele", LookAt:=xlWhole)
Set CColoris = Range("1:1").Find(What:="code_coloris", LookAt:=xlWhole)
Set Taille = Range("1:1").Find(What:="taille", LookAt:=xlWhole)
If Not Modele Is Nothing And Not CColoris Is Nothing And Not Taille Is Nothing Then
For I = 2 To DerLigne
Range("A" & I) = Modele.Offset(I - 1)  & CColoris.Offset(I - 1)  & Taille.Offset(I - 1)
Next I
End If
End Sub
Bonne suite :cool:
 
Dernière édition:
G

Guest

Guest
Re : Macro Concatener cellule

Bonjour,

Je comprends que tu puisses 'devenir Maboule' mais que cela ne t'empêche pas de nous dire bonjour:D

Voici en pièce jointe, avec message d'avertissement si une des entêtes de colonne venait à manquer.
Petite question, pourquoi mettre une formule et pas le SKU en dur?

A+

[Edit] Hello JNP:D
 
Dernière modification par un modérateur:

Staple1600

XLDnaute Barbatruc
Re : Macro Concatener cellule

Bonsoir à tous

Une autre approche (pour varier la sauce VBA ;) )
Code:
Sub abc()
Dim a, b, Arr(), dl&, i&, j&
dl = [A65536].End(xlUp).Row
a = Range("E2:E" & dl).Value: b = Range("G2:H" & dl).Value
ReDim Arr(1 To dl)
j = 1
For i = 1 To UBound(a)
    Arr(j) = a(i, 1) & b(i, 1) & b(i, 2)
    j = j + 1
Next i
Columns(1).Insert
With [A1]
    .Offset(1).Resize(dl) = Application.Transpose(Arr)
    .Value = "SKU"
End With
End Sub

EDITION: Salutas Hasco ;) , Hello JNP ;)

EDITION2: Houps désolé (çà doit être à cause du crémant d'Alsace de ce midi - pottaff oblige ;) )
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 331
Membres
103 816
dernier inscrit
vladmir