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 :

Générer une liste à partir de liste


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Lunetier
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Lunetier

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Par défaut Générer une liste à partir de liste
    Bonjour,

    A partir des deux listes, j'aimerais en générer une troisième qui serait le résultat de la concaténation des deux autres avec l'ajout d'une chaîne de caractères.

    Exemple: Liste 1 : Ballon;Vélo Liste 2 : Rouge;Bleu;Jaune

    et génération automatique de la Liste 3 : Ballon de couleur Rouge;Ballon de couleur Bleu;Ballon de couleur Jaune;Vélo de couleur Rouge;Vélo de couleur Bleu;Vélo de couleur Jaune

    Merci de votre aide, je n'ai pas encore trouvé la solution,
    Bien cordialement

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 571
    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 571
    Par défaut
    Bonjour

    Facile à faire avec PowerQuery, intégré à partir de 2016, en add on sur 2010 et 2013

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Lunetier
    Inscrit en
    Février 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Lunetier

    Informations forums :
    Inscription : Février 2019
    Messages : 2
    Par défaut
    Ok merci à vous de la piste, je vais creuser pour découvrir cette fonctionnalité...

    merci encore et à plus tard,

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub essai()
      a = Array("Ballon", "vélo")
      b = Array("rouge", "vert", "Bleu")
      ReDim c(1 To (UBound(a) + 1) * (UBound(b) + 1))
      For i = 0 To UBound(a)
        For j = 0 To UBound(b)
           c(i * (UBound(b) + 1) + j + 1) = a(i) & " de couleur " & b(j)
        Next j
      Next i
      [A1].Resize(UBound(c)) = Application.Transpose(c)
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonjour

    Avec un contexte précis :
    2 listes chacune intégrée dans son Tableau (ç1 et ç2) qu’on peut modifier donc avec une évènementielle pour récupérer la nouvelle liste intégrée dans un Tableau nommé ç3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Private Sub Worksheet_Change(ByVal R As Range)
        If Not Intersect(R, Union([ç1], [ç2], [ç1].Rows([ç1].Rows.Count + 1), [ç2].Rows([ç2].Rows.Count + 1))) Is Nothing Then
            Dim C1 As Range, C2 As Range, i As Byte
           Application.ScreenUpdating = 0
            If Application.CountA([ç3]) > 1 Then [ç3].Delete    'nettoie le tableau ç3
            For Each C1 In [ç1]                                         'parcourt le tableau ç1
                For Each C2 In [ç2]                                     'parcourt le tableau ç2
                    i = i + 1                                              'ajoute une ligne dans le tableau ç3
                    [ç3].Item(i, 1) = C1 & " en " & C2          'concatène
                Next
            Next
        End If
    End Sub
    Remarque: la saisie de doublon n’est pas traitée. Elle peut être ajoutée simplement dans la macro.

    Pour ceux qui ne connaissent pas encore la commande Tableau, il y a dans le fichier joint un début d’explications (2 images qui alourdissent un peu le classeur).
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    OrDonc, c'est bizarre tes ç dans tes ref... :-)
    eric

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut mais Si...
    Bonsoir Eric
    Hé oui, la première réaction, quand on ne sait pas, est de dire « bizarre ».
    Je pourrais ajouter « Vous avez dit bizarre, comme c’est bizarre ! ».

    J’ai trop souvent vu des codes imbuvables car la consigne était : « le nom doit être significatif ! *»
    J’ai l’habitude de donner les noms les plus simples, les plus courts aux objets que j’utilise.
    Quand j’en ai plusieurs de même nature, je les numérote pour les distinguer et faciliter l’écriture de certains codes.
    Le problème est qu’on doit éviter de les numéroter A1, A2 … C1, C2 … NRV1, NRV2 … Ou3 … ,Tbo1 , Tbo2 …qui sont interprétés comme noms de cellule !
    D’où mon choix de ç1, … à5 …é2, … Où3 ... (introduction de lettres autorisées)

    *pour le clin d’œil : en plus ç1 peut faire penser à C’est 1*

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

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Houla, c'est piègeux ton truc :-)
    J'étais persuadé que c'était un C1 qui avait mal tourné et que tu avais un soucis avec ton éditeur.
    Bah, tant que ça n'embrouille pas plus que ça les débutants... ;-)
    eric

Discussions similaires

  1. Réponses: 14
    Dernier message: 13/07/2012, 16h50
  2. Générer une liste à partir d'une autre
    Par caillon99 dans le forum Général Python
    Réponses: 3
    Dernier message: 28/06/2011, 23h08
  3. Réponses: 8
    Dernier message: 10/12/2009, 16h53
  4. Générer une liste d'adresse IPs à partir d'une plage d'adresse.
    Par johnnyjohnny dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 25/11/2008, 22h35
  5. [XSLT] Générer une liste déroulante à partir d'un fichier xml ?
    Par chipster45 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2007, 09h59

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