IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Concaténer via macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut Concaténer via macro
    Hello le Forum,

    Je souhaite concatener la colonne A et B sans la colonne C.

    J'ai fait (une de mes premières svp indulgence) une macro, mais je ne sais pas pourquoi ça ne joue pas ou alors je suis à côté de la plaque

    Voyez le fichier joint, les explications dedans sont plus claires je crois.

    Si toutefois vous ne parvenez pas à prendre le fichier joint (ça m'arrive parfois dans ce forum) le code de ma macro est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub ConcatenerColonneAetB()
    Dim Noms As Range
    Dim Prenoms As Range
    Dim Conc As Range
     
    Sheets(1).Activate
     
    For Each Prenoms In Range("B2:B" & Range("B65536").End(xlUp).Row)
    Next Prenoms
     
    For Each Conc In Range("C2:C" & Range("C65536").End(xlUp).Row)
    Next Conc
     
    For Each Noms In Range("A2:A" & Range("A65536").End(xlUp).Row)
        If Noms.Value <> "" And Prenoms.Value <> "" Then
            Conc.Value = Noms.Value & " - " & Prenoms.Value
        End If
    Next Noms
    Range("A2").Select
    End Sub
    et le code dont j'aimerais que ma macro fasse le même résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Macro1()
        Range("C2").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]& "" - "" &RC[-1]"
        Selection.AutoFill Destination:=Range("C2:C11"), Type:=xlFillDefault
        Calculate
        Range("A2").Select
    End Sub
    Si un génie pouvait m'aider, par avance un grand merci.

    Cdt, Anto.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Est-ce que cela vous conviendrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub ConcatenerColonneAetB()
    Sheets(1).Activate
    dl = Range("A65536").End(xlUp).Row
    For i = 2 To dl
    Cells(i, 3) = Cells(i, 1) & Cells(i, 2)
    Next i
    Range("A2").Select
    End Sub
    Bien sûr vous pouvez affecter les valeurs à des variables, mais dans ce cas ce n'est pas nécessaire et en tout cas pas obligatoire.

    Si vous avez des cellules non remplies dans la plage vous pouvez utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub ConcatenerColonneAetB()
    Sheets(1).Activate
    dl = Range("A65536").End(xlUp).Row
    For i = 2 To dl
       If Cells(i, 1) <> "" and Cells(i, 2) <> "" then
       Cells(i, 3) = Cells(i, 1) & Cells(i, 2)
       end If
    Next i
    Range("A2").Select
    End Sub

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Antoniom et le forum
    Je souhaite concatener la colonne A et B sans la colonne C.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For Each Prenoms In Range("B2:B" & Range("B65536").End(xlUp).Row)
    Next Prenoms
    Pour chaque cellule(qui prendra le nom de variable "Prenoms") de la colonne B de ligne 2 à dernière
    cellule suivante
    Belle boucle, mais elle ne fait rien
    Une proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ConcatenerColonneAetB()
    Dim Cel As Range
    For Each Cel In Range("A2:A" & Range("A65536").End(xlUp).Row)
        If Cel <> "" And Cel.Offset(0, 1) <> "" Then _
           Cel.Offset(0, 2) = Cel & " - " & Cel.Offset(0, 1)
    Next Cel
    End Sub
    A+

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Hello,

    Hm j'étais aux fraises quoi

    Impeccable Jean-Jaques et Gorfael, les deux méthodes (même trois) sont excellentes !

    Un grand merci.

    Cdt, Hulk.

  5. #5
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour Antoniom jacques_jean Gorfael le forum

    en modifiant ta macro1 une autre possibilite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Macro1()
    [c2].Select: ActiveCell.FormulaR1C1 = "=RC[-2]& "" - "" &RC[-1]"
    Range("c2:c" & Cells.Find("*", , , , , xlPrevious).Row).FillDown: [a2].Select
    End Sub

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Re,

    Ok Laetitia merci, pas mal aussi, j'y classe dans mon tiroir

    Merci et au plaisir.

    Bon WE à tous, Anto.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 226
    Par défaut
    Hello le Forum,

    Je reviens là dessus, car suite aux solutions trouvées hier, j'ai encore une petite question.

    J'ai finalement opté pour la solution à Gorfael et j'espère que vous ne m'en voudrez pas Laetitia et Jean-Jaques.

    Donc à partir du code à Gorfael, comment puis-je faire pour que tout (lettres, chiffres, caractères) ce qui se trouve à gauche du tiret soit en rouge, et tout ce qui se trouve à droite du tiret en vert.

    Exemples :

    tutu - ssdd

    ou

    Reft%&343 - fgt

    ou

    lsd233l - 345

    Bref, tout ce qui est à gauche du tiret en rouge et tout ce qui est à droite du tiret en vert... Possible ça ?

    J'ai bien essayé avec les Right et Len, mais je ne connais pas vraiment ces fonctions en vba.. Quelqu'un peut-il m'aider svp.

    Par avance merci.

    Bon dimanche, Antoniom.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Antoniom et fle forum
    Texte en A1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro1()
    'Déclaration ===============
    Dim X As Long
    'Recherche séparateur ======
    X = InStr([A1], "-")
    'colorage ==================
    [A1].Characters(Start:=1, Length:=X).Font.ColorIndex = 3
    [A1].Characters(Start:=X, Length:=Len([A1]) + 1 - X).Font.ColorIndex = 43
    End Sub
    C'est du brut : faudrait vérifier la présence du tiret avant de colorier, mais ça donne le principe
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concaténation de tableau via macro
    Par chtrousselle dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/10/2012, 12h46
  2. Valeur absolue de montant dans excel via macro
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/05/2007, 18h09
  3. [Excel] ComboBox - extension liste via macro
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/01/2007, 21h43
  4. Réponses: 1
    Dernier message: 26/01/2006, 17h04
  5. [VBA/Excel] Formule via macro
    Par UNi[FR] dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2005, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo