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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 564
    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 564
    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

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