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 :

Problème concaténation excel/vba


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Problème concaténation excel/vba
    Bonjour, je ne m'y connais pas du tout en VBA et j'ai une macro Excel a modifier. Un des problèmes qui se pose à moi est le suivant :
    J'ai 4 colonnes (B,C,D et E) qui contiennent un nom et les trois prénoms d'un individu; je dois concaténer ces 4 champs
    et j'ai le code suivant(déjà existant avant ma modif) :


    Sub TRAITNOMPRENOMS()
    Application.StatusBar = "CREATION DE LA DONNEE NOM PRENOMS"

    NumColonne = 2

    Columns(NumColonne).Insert Shift:=xlToRight

    ' Cells(1, NumColonne) = "=CONCATENER(LC(1);"" "";LC(2);"" "";LC(3);"" "";LC(4))"
    Cells(1, NumColonne) = Cells(1, NumColonne) + Cells(1, NumColonne + 1) + " " + Cells(1, NumColonne + 2) + " " + Cells(1, NumColonne + 3)


    NbCopFin = 0
    NbSupFin = 4

    UTILCOPIERCOLLERSUPPRIMER
    End Sub

    .

    .

    .

    .

    Sub UTILCOPIERCOLLERSUPPRIMER()



    'copie vers le bas
    Range(Cells(1, NumColonne), Cells(LignesTotal, NumColonne + NbCopFin)).Select
    Selection.FillDown

    'suppression des formules
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
    '
    'Suppression des colonnes origines des données
    Range(Cells(1, NumColonne + 1), Cells(LignesTotal, NumColonne + NbSupFin)).Delete Shift:=xlToLeft

    End Sub



    Le soucis est qu'il me concatène bien les champs pour la première occurrence mais il fait un copier coller vers le bas et je perd donc toutes les données des individus suivants.
    Quelqu'un pourrait il m'aider afin de résoudre ce problème?
    La question est assez mal formulé mais je ne vois pas comment faire plus clair, désolé

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Et une fois que tu as concaténé les 4 termes, tu veux les mettre où? En colonne 1?

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Et si tu décommentes la formule en commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(1, NumColonne) = "=CONCATENER(LC(1);"" "";LC(2);"" "";LC(3);"" "";LC(4))"
    et que tu commentes celle du dessous, ça n'irait pas mieux, par hasard?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Problème concaténation excel/vba
    En fait je crée une colonne (en 2) et c'est a cet endroit que je souhaite mettre le résultat.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Megaxel
    Et si tu décommentes la formule en commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(1, NumColonne) = "=CONCATENER(LC(1);"" "";LC(2);"" "";LC(3);"" "";LC(4))"
    et que tu commentes celle du dessous, ça n'irait pas mieux, par hasard?
    non ca me met "erreur d'execution 1004, erreur définie par l'application ou l'objet".

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tu peu essayer de modifier ton code .. la ligne à activer pour modifier la formule devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, NumColonne).FormulaR1C1Local = "=CONCATENER(LC(1);"" "";LC(2);"" "";LC(3);"" "";LC(4))"

  7. #7
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Oui, d'accord.
    Et donc, si tu échanges les deux formules existantes, comme je te l'ai dit? La formule étant en relatif, ça devrait marcher.

    [Edit] D'accord avec bbil....

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par bbil
    tu peu essayer de modifier ton code .. la ligne à activer pour modifier la formule devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1, NumColonne).FormulaR1C1Local = "=CONCATENER(LC(1);"" "";LC(2);"" "";LC(3);"" "";LC(4))"
    Avec cette ligne de code, la concatenation se passe bien, par contre, je me retrouve avec le même nom et les mêmes prénoms sur toutes les lignes, donc je perd mes données . . .

  9. #9
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Est-ce que tu veux nous donner la formule qui se trouve dans les cellules de la colonne 2 (où se trouvent les concaténations) ?

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ben j'ai pas de formule, je crée la colonne via la macro avec la ligne :

    Columns(NumColonne).Insert Shift:=xlToRight

    A moins que je me plante completement . . .

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ben j'ai pas de formule, je crée la colonne via la macro avec la ligne :

    Columns(NumColonne).Insert Shift:=xlToRight

    A moins que je me plante completement . . .

  12. #12
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Houla, là, on ne se comprend pas.
    A la fin de l'exécution de ta macro, qui te met sur toute la colonne le même "nom prenom1 prenom2 prenom3", si tu cliques sur une des cellules, tu dois avoir une formule dans la barre de formule. C'est cette formule que j'aimerais voir (en ligne 1, puis sur les lignes en dessous)

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    oulala, il n'y a aucune formule dans la barre de formule, mais juste le résultat de la concaténation

  14. #14
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Houps, d'accord, c'est vrai: dans la suite du code, il-y-a un copier-coller par valeur...
    Peux-tu commenter le code qui fait ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'suppression des formules 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlValues, Operation:= _ 
    xlNone, SkipBlanks:=False, Transpose:=False 
    '

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ton classeur est t'il en recalcul automatique ? si non il faut lance r le calcul aprés la recopie des formules , ligne à placer aprés le fil)lDown..
    (copie vers le bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    Range(Cells(1, NumColonne), Cells(LignesTotal, NumColonne + NbCopFin)).Select
    Selection.FillDown
    Calculate
    'suppression des formules
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:= _
    ...


  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    ca y est mais le résultat est toujours le même . . .

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par bbil
    Ton classeur est t'il en recalcul automatique ? si non il faut lance r le calcul aprés la recopie des formules , ligne à placer aprés le fil)lDown..
    (copie vers le bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    Range(Cells(1, NumColonne), Cells(LignesTotal, NumColonne + NbCopFin)).Select
    Selection.FillDown
    Calculate
    'suppression des formules
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:= _
    ...


    Ca y est c'est ca, ca marche, merci beaucoup a vous deux
    ;-)

  18. #18
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ha ben? C'est cool, ça! Je disparais 1/2 heure, et bbil s'est occupé du problème.
    Il ne manque plus que le tag "RÉSOLU"...

  19. #19
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par rotterdamt
    Ca y est c'est ca, ca marche, merci beaucoup a vous deux
    ;-)
    Un petit clic sur le tag tout en bas à gauche

    Merci d'avance

    Bonne continuation

    Théo

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

Discussions similaires

  1. VBA Excel - Problème de password VBA
    Par sat478 dans le forum VBA Word
    Réponses: 5
    Dernier message: 11/01/2006, 17h38
  2. concaténation en vba dans une formule de cellule Excel
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/12/2005, 22h58
  3. Problème avec open() [Excel VBA]
    Par heddicmi dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21
  4. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27

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