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 :

Concatenation de deux colonnes et inserer cette concatenation dans une nouvelle colonne


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Points : 94
    Points
    94
    Par défaut Concatenation de deux colonnes et inserer cette concatenation dans une nouvelle colonne
    Bonjour à tous,

    J'ai créé une macro qui me permet de concatener deux colonnes cell(i,1) et cell(i,2).

    Ensuite je souhaites inserer une colonne automatiquement pour inserer les valeurs de ma concatenation.

    Voici ci dessous ma macro

    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
    Sub Traitement_Donnees()
     
    Dim i As Long 'variable pour le nombre de lignes
    Dim j As Long 'variable pour le nombre de colonnes
    Dim lMaxRow As Long
    Dim lMaxCol As Long
     
    lMaxRow = SearchLastRow(CurrentWsSource) 'fonction 
    lMaxCol = SearchLastCol(CurrentWsSource) 'fonction
     
    For i = 2 To lMaxRow - 1 'en partant de la ligne 2 à l'avant derniere ligne
    lMaxCol = 3 '3 eme colonne
    Columns(i, lMaxCol).Insert
    Cells(i, lMaxCol).Value = Cells(i, 1).Value & "_" & Cells(i, 2).Value 'concatenation
     
    End sub
    Je recois un message d'erreur à la ligne Columns(i,lmaxcol).insert et je ne sais pas pourquoi, il devrais inserer une troisieme colonne automatiquement et recuperer mon resultat (cells(i,lmaxcol).value).

    j'esperes que mon explication est assez claire. Je vous remercie par avance pour vos aides.

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    As-tu essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(lMaxCol).Insert
    Cordialement.

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Points : 94
    Points
    94
    Par défaut
    Salut,

    Merci pour ta reponse.

    J'ai essayé Columns(lMaxCol).Insert mais ca me créé une colonne pour chaque ligne (si j'ai 50 lignes, il me crée 50 colonnes). Ca ne me crée pas une seule colonne

    J'ai essayé de mettre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("source").Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    For i = 2 To lMaxRow - 1
    lMaxCol = 3
    Cells(i, lMaxCol).Value = Cells(i, 1).Value & "_" & Cells(i, 2).Value 'concatenation des deux premieres colonnes
    Next i
    Le code ci dessus, me crée certes une nouvelle ligne mais cependant, il créé une nouvelle ligne à chaque fois que je lance ma macro et c'est pas vraiment ce que je souhaites.

    J'aimerais garder la meme colonne insérée à chaque fois que je lance ma macro.

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Le code ci dessus, me crée certes une nouvelle ligne mais cependant, il créé une nouvelle ligne à chaque fois que je lance ma macro et c'est pas vraiment ce que je souhaites.
    De quelle ligne parles-tu ? C’est bien une colonne que tu ajoutes, non ?

    J'aimerais garder la même colonne insérée à chaque fois que je lance ma macro.
    Si tu souhaites insérer ta colonne une seule fois, tu dois différencier les 2 traitements.
    Tu as le choix entre plusieurs solutions :
    - Tu effectues 2 traitements distincts
    - Tu effectues un traitement unique qui intègre un test de présence de la 3eme colonne.
    - Tu crée ta 3eme colonne avant d’effectuer le traitement.
    C’est selon ….

    Cordialement.

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par gFZT82 Voir le message
    De quelle ligne parles-tu ? C’est bien une colonne que tu ajoutes, non ?
    oui je rajoute une colonne, je me suis trompée en ecrivant desolée!!!!



    Citation Envoyé par gFZT82 Voir le message
    Tu as le choix entre plusieurs solutions :
    - Tu effectues 2 traitements distincts
    - Tu effectues un traitement unique qui intègre un test de présence de la 3eme colonne.
    - Tu crée ta 3eme colonne avant d’effectuer le traitement.
    C’est selon ….
    as tu des idées de codes pour ta troisieme solution??? ca m'interesse

    Merci

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    La 3eme c’est la plus simple.
    Sous Excel, avec ton mulot tu te positionnes sur la colonne, bouton droit, insertion … et le tour est joué .

    Cordialement.

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par gFZT82 Voir le message
    La 3eme c’est la plus simple.
    Sous Excel, avec ton mulot tu te positionnes sur la colonne, bouton droit, insertion … et le tour est joué .

    Cordialement.
    ce ne sera plus automatique alors, il faudra à chaque fois creer manuellement une colonne pour ma macro c'est ca?

    j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Sheets("source").Columns("C:C").Select
    'Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    mais comme je t'ai dit tout à l'heure, ca me créé une nouvelle colonne à chaque fois que je lance ma macro

    PS: ce que j'ai oublié de dire c'est ma feuille "Source" contient un tableau de donnée avec colonne 1 : composant , colonne 2: site de fabrication et à partir de colonne 3: volume de composant produit par an

  8. #8
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Points : 94
    Points
    94
    Par défaut
    Voici un exemple de mon fichier!!!!
    Fichiers attachés Fichiers attachés

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Voici un exemple de code avec un test sur la 3eme colonne.
    Si l'en-tête de cette colonne n'est pas "Concat", alors on insère une colonne et on écrit l'en-tête "Concat".

    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
    21
    22
    Sub Traitement_Donnees()
     
    Dim i As Long 'variable pour le nombre de lignes
    Dim j As Long 'variable pour le nombre de colonnes
    Dim lMaxRow As Long
    Dim lMaxCol As Long
     
    lMaxRow = SearchLastRow(CurrentWsSource) 'fonction
    lMaxCol = SearchLastCol(CurrentWsSource) 'fonction
     
    With Worksheets("source")
        If .Range("C1") <> "Concat" Then
            .Columns(3).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
            .Range("C1") = "Concat"
        End If
        For i = 2 To lMaxRow - 1 'en partant de la ligne 2 à l'avant derniere ligne
            lMaxCol = 3 '3 eme colonne
            .Cells(i, lMaxCol).Value = .Cells(i, 1).Value & "_" & .Cells(i, 2).Value 'concatenation
        Next i
    End With
     
    End Sub
    Cordialement.

  10. #10
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Points : 94
    Points
    94
    Par défaut
    merci gFZT82 pour ton aide,

    ca fonctionne!!!


    je te remercie grandement ca faisait deux jours que je m'attarde dessus.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/07/2012, 12h25
  2. Réponses: 1
    Dernier message: 11/02/2011, 12h44
  3. Réponses: 1
    Dernier message: 21/07/2009, 12h34
  4. extraire dans une nouvelle colonne le min issu de 3 autres colonnes
    Par ibilliau dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 06/01/2009, 09h48
  5. Réponses: 1
    Dernier message: 10/05/2006, 16h01

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