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 :

équivalent de =CONCATENER(A1:A23)


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut équivalent de =CONCATENER(A1:A23)
    bonjour,

    je cherche un moyen de simple de concaténer une plage de cellules (avec des formules pas de macro)

    donc il me faudrait une sorte de

    malheureusement cette formule me retourne #VALEUR!

    je précise un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCATENER(A1;A2;A3;A4;...;A23)
    ou un

    ne m'interessent pas.

    il me faut vraiment concaténer une plage de cellule. sans macro

    l'aide de excel sur cette fonction ne m'est d'aucun secours.

    suis-je obligé de faire une function custom pour ca ?

      0  0

  2. #2
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour,

    l'argument de la Function CONCATENER est du texte et non une cellule ou plage de cellules
    texte1;texte2; ... représentent les 1 à 30 éléments de texte à assembler
    je ne crois pas que tu ai d'autre choix qu'une Function perso.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function MaPlageConcatener(plg As Range) As String
    For Each c In plg
    MaPlageConcatener = MaPlageConcatener & c
    Next
    End Function

    isabelle
      0  0

  3. #3
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    aie.

    c'est ce que je craignais.

    du coup, je vais me taper le warning sécurité Macro à l'ouverture du fichier... :'(

    bon, je testerai ca bientôt mais nul doute qu'un truc comme ca doit fonctionner.

    qqn a une autre idée au cas où ?
      0  0

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 487
    Points : 16 389
    Points
    16 389
    Par défaut
    Bonjour

    Sinon une colonne supplémentaire, mettons en Z ,éventuellement masquée ensuite ou placée sur un autre onglet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    en ligne 1
    =A1
     
    en ligne 2
    =A2&Z1
     
    cette 2ème formule à recopier jusqu'en ligne 23
      0  0

  5. #5
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    pas mal la feinte.

    au moins la solution est vite mise en place

    par contre, ca me gonfle de polluer 23 colonnes pour ca.
    sachant que la manip concerne plusieurs milliers de lignes ca va faire gonfler le .xls je crains => non ?


    (d'autant qu'on ne peut pas utiliser ici le format .xlsx qui compresse le classeur de mémoire :'()
      0  0

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 487
    Points : 16 389
    Points
    16 389
    Par défaut
    Bonjour

    Cela n'ajoute qu'une colonne.

    On peut placer cette colonne dans un autre onglet

    Attention la taille maxi (du moins jusqu'à la version 2003) sera 1024 caractères.
      0  0

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Tu peux télécharger des fonctions complémentaires pour Excel. J'ai chargé il y a quelque temps un paquet qui s'appelait "Morefunc" et dans lequel il y avait une fonction de concaténation (MCONCAT) plus sophistiquée que celle de base.
      0  0

  8. #8
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    interessant

    ce paquet morefunc ?
    il est édité par microsoft ?
    c'est facile à installer pour un user lambda ?

    edit :
    c'est gratuit ?
    c'est facile à distribuer ? (par exemple en donnant l'url où le télécharger aux personnes qui veulent ouvrir mon classeur)
      0  0

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Le package est gratuit et s'installe tout seul.
    Je n'ai jamais eu à m'en plaindre.
      0  0

  10. #10
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour fourchette,

    Morefunc est distribué en tant que Freeware. L'installation est entièrement automatisée.

    Il est utilisable en deux langues, français ou anglais, et est accompagné d'une aide en ligne détaillée.

    c'est Laurent Longre qui a pondu ce pack, il a gagné un prix microsoft pour cette excellent travail.

    isabelle
      0  0

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Merci pour ce complément d'info.
      0  0

  12. #12
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    il fleure bon cet addon morefunc, très bon meme
    j'y vois direct des trucs qui m'ont tjs manqué dans excel
    mais je pense que ca doit faire l'objet d'une reflexion à part quant à savoir s'il est éligible pour une mise en prod ou non de mon coté.

    pour revenir sur la question initiale, je pense qu'on peut conclure par
    * soit on se tape un =A1&A2&A3&...&A23 (à taper à la main donc)
    * soit un se fait une function custom (qd mm très facile à coder, mais donc warning macro à l'ouverture du classeur)
    * soit on passe par la feinte du Z1 contient =A1, du AA1 contient =A2&Z1 qu'on tire ensuite sur le nb de colonnes requises à la dernier on a la bonne valeur
    (note pour 78chris => je suis obligé de passer par des colonnes (et non pas par ligne) comme ca car je dois calculer la formule =concatener(A1:A23) pour chaque ligne d'un tableau de plusieurs millieurs de lignes... oui on peut argumenter que excel n'a peut-etre rien à faire pour ca mais c'est hors sujet disons )
    * soit on passe par la formule =MCONCAT(Table;Séparateurs) issue du plugin excel MOREFUNC

    j'ai bon ?

    qqn a d'autres idées au cas où ?
      0  0

  13. #13
    Membre à l'essai
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Novembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2010
    Messages : 18
    Points : 16
    Points
    16
    Par défaut

    bonjour,
    d'abord tu ouvres VBE (Alt+[f11])
    ensuite tu colles le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function ConcatPlage(plage As Range, Optional séparateur As String = ", ") As String
        Dim rep As String, c As Range
        For Each c In plage
            If c.Value <> "" Then
                rep = rep & c.Value & séparateur
            End If
        Next c
        ConcatPlage = Left(rep, Len(rep) - Len(séparateur))
    End Function
    ensuite tu clique sur la cellule de destination et insérer une fonction personnalisés tu trouveras "ConcatPlage"

    tu renseigne la plage à concatener et tu mets ton séparateur entre guillemets

    exemple : =ConcatPlage(A29:A36;"-")
      1  0

  14. #14
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    jolie déterrage de post

    quel dommage d'y aller avec une macro cela-dit. ca m'ajouterai le warning sécurité juste pour ca.

    je l'essayerai cette function à l'occasion.
      0  0

  15. #15
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    983
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 983
    Points : 1 030
    Points
    1 030
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par kingfadhel Voir le message

    bonjour,
    d'abord tu ouvres VBE (Alt+[f11])
    ensuite tu colles le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function ConcatPlage(plage As Range, Optional séparateur As String = ", ") As String
        Dim rep As String, c As Range
        For Each c In plage
            If c.Value <> "" Then
                rep = rep & c.Value & séparateur
            End If
        Next c
        ConcatPlage = Left(rep, Len(rep) - Len(séparateur))
    End Function
    ensuite tu cliques sur la cellule de destination et insères une fonction personnalisée tu trouveras "ConcatPlage"

    tu renseignes la plage à concaténer et tu mets ton séparateur entre guillemets

    exemple : =ConcatPlage(A29:A36;"-")

    Merci kingfadhel pour cette fonction très utile.
    Perso je l'ai collée dans un module

    Encore merci
      0  0

  16. #16
    Candidat au Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Dans une autre feuille excel tu met A1 et tu tires vers la droite pour qu'il incrémente jusqu'au chiffre dont tu as besoin, tu copies la plage dans notepad et tu fais un remplacement de la tabulation par &, tu préfixes le tout d'un égale et c'est bon .
      0  0

Discussions similaires

  1. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  2. Concaténation de chaine de caractères
    Par joy dans le forum Linux
    Réponses: 5
    Dernier message: 07/07/2003, 13h03
  3. [postgreSQL] équivalent de la function 'instr'
    Par Dra_Gun dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2003, 16h09
  4. Équivalent du #IFDEF
    Par agh dans le forum Langage
    Réponses: 4
    Dernier message: 14/10/2002, 18h44
  5. probleme de concatenation
    Par cyna dans le forum C
    Réponses: 2
    Dernier message: 23/08/2002, 10h41

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