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

leina_33

XLDnaute Nouveau
Re : Macro Concatener cellule

Bonjour,

Un grand Merci à tous, mon problème est résolu !!!!

Staple: ta version ne fonctionne que si mes colonnes sont bien à l'emplacement de mon exemple mais sinon non :(
JNP : Ca marche niquel
Hasco : Je préfere ta version avec le message d'erreur en cas de probleme de colonne
J'ai modifié un peu le code car "SKU" se notait pas en A1 et j'ai supprimer la colonne A si le message d'erreur s'active.

Au cas ou le sujet interesse quelqu'un d'autre un jour, résultat final opérationel :
Code:
Sub ajout_colonne_SKU()
Dim idx1, idx2, idx3
Dim derLig As Long
With ActiveSheet
    derLig = .Cells(.Rows.Count, 1).End(xlUp).Row
    .Columns(1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("a1").Select
    ActiveCell.FormulaR1C1 = "SKU"
    idx1 = Application.Match("Modele", .Range("1:1"), 0)
    idx2 = Application.Match("code_coloris", .Range("1:1"), 0)
    idx3 = Application.Match("taille", .Range("1:1"), 0)
    If Not IsError(idx1) And Not IsError(idx2) And Not IsError(idx3) Then
    .Cells(2, 1).Resize(derLig).Formula = "=CONCATENATE(" & .Cells(2, idx1).Address(0, 0) & "," & .Cells(2, idx2).Address(0, 0) & "," & .Cells(2, idx3).Address(0, 0) & ")"
    Else
        MsgBox "Verifier que les entêtes de colonnes: 'Modele', 'code_coloris' et 'taille' sont bien en ligne 1 et recommencez!", vbExclamation, "Ajout_colonne_SKU"
    Columns("A:A").Delete Shift:=xlToLeft
End If
End With

End Sub

Encore Merci à tous et bonne journée
 
G

Guest

Guest
Re : Macro Concatener cellule

bonjour Liena,

Autant ne pas créer, c'est vrai la nouvelle colonne si une donnée n'exite pas, plutôt que la supprimer après coup:
Code:
Sub ajout_colonne_SKU()
    Dim idx1, idx2, idx3
    Dim derLig As Long
    With ActiveSheet
        idx1 = Application.Match("Modele", .Range("1:1"), 0)
        idx2 = Application.Match("code_coloris", .Range("1:1"), 0)
        idx3 = Application.Match("taille", .Range("1:1"), 0)
        If Not IsError(idx1) And Not IsError(idx2) And Not IsError(idx3) Then
            .Columns(1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            .Cells(1, 1).Select
            ActiveCell = "SKU"
            derLig = .Cells(.Rows.Count, 1).End(xlUp).Row
            .Cells(2, 1).Resize(derLig).Formula = "=CONCATENATE(" & .Cells(2, idx1).Address(0, 0) & "," & .Cells(2, idx2).Address(0, 0) & "," & .Cells(2, idx3).Address(0, 0) & ")"
        Else
            MsgBox "Verifier que les entêtes de colonnes: 'Modele', 'code_coloris' et 'taille' sont bien en ligne 1 et recommencez!", vbExclamation, "Ajout_colonne_SKU"
        End If
    End With
End Sub
Excuse, je n'avais pas vu ton message de 14:36:D

A+
 

pierrejean

XLDnaute Barbatruc
Re : Macro Concatener cellule

Re

Salut à tous :)

A tester egalement (pas optimisé du coté de l'elegance ,mais facile a comprendre et adapter si necessaire)

Code:
Sub test()
If Range("A1") <> "SKU" Then Columns("A:A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1") = "SKU"
Set col_modele = Rows(1).Find("Modele", LookIn:=xlValues, lookat:=xlWhole)
If Not col_modele Is Nothing Then
  c_modele = col_modele.Column
Else
  MsgBox ("tableau non conforme")
  Exit Sub
End If
Set col_coloris = Rows(1).Find("code_coloris", LookIn:=xlValues, lookat:=xlWhole)
If Not col_coloris Is Nothing Then
  c_coloris = col_coloris.Column
Else
  MsgBox ("tableau non conforme")
  Exit Sub
End If
Set col_taille = Rows(1).Find("taille", LookIn:=xlValues, lookat:=xlWhole)
If Not col_taille Is Nothing Then
  c_taille = col_taille.Column
Else
  MsgBox ("tableau non conforme")
  Exit Sub
End If
For n = 2 To Range("B65536").End(xlUp).Row
  Range("A" & n) = Cells(n, c_modele) & Cells(n, c_coloris) & Cells(n, c_taille)
Next n
End Sub
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz