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 :

Fusion de 3 listes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 37
    Par défaut Fusion de 3 listes
    Bonjour, j'ai 3 listes différentes, dans lesquels je dois fusionner les informations, j'ai commencé par copier/coller les 3 listes les unes en dessous des autres, avec le numéro d'identifiant dans la même colonne, pareil pour le nom, et j'ai une colonne en plus pour chaque liste que j'ai rajouté, une fois le tri par identifiant effectué, j'ai donc des doublons, voir des triplons avec le même code/nom.

    J'ai donc créé la macro suivante pour essayer d'envoyer les infos dans la première ligne, il me suffira ensuite de supprimer les lignes vides, mais je pense faire une erreur sur la sélection de la case, je fais ma vérification sur la case D7, j'essaye de rapatrier les infos situées dans les colonnes G et H, puis je descend.
    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
    23
    24
    25
    26
    27
    28
    Sub fusion()
    Dim j As Integer
    Dim i As Integer
    j = 0
    i = 7
     While D(i) <> ""
        If D(i) <> D(i + 1) Then
            If j = 0 Then i = i + 1
                Select Case Number
                    Case 0
                    i = i + 1
                    Case 1
                    H(i - j) = H(i - 1)
                    G(i - j) = G(i - 1)
                    j = 0
                    Case 2
                    H(i - j) = H(i)
                    G(i - j) = G(i - 1)
                    j = 0
                End Select
            End If
     
        Else
            j = j + 1
            i = i + 1
        End If
     Wend
    End Sub
    Quelqu'un voit une solution ?
    Merci de votre aide

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Que représente la variable "Number" ?

    Si les variables D, G, H et autres sont supposées représenter des références de cellules, tu devrais lire ça (au moins) :
    https://docs.microsoft.com/fr-fr/off....range(object)

  3. #3
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2018
    Messages : 37
    Par défaut
    Merci de votre réponse.

    Effectivement, j'ai remplacé number par j, ça devrait être un peu mieux ^^
    J'ai modifié mes références de cellules en me basant sur le lien que vous avez indiqué :

    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
    23
    24
    25
    26
    27
    Sub fusion()
    Dim j As Integer
    Dim i As Integer
    j = 0
    i = 7
     While Cells(D, i) <> ""
        If Cells(D, i) <> Cells(D, i + 1) Then
            If j = 0 Then i = i + 1
                Select Case j
                    Case 0
                    i = i + 1
                    Case 1
                    Cells(H, (i - j)) = Cells(H, (i - 1))
                    Cells(G, (i - j)) = Cells(G, (i - 1))
                    j = 0
                    Case 2
                    Cells(H, (i - j)) = Cells(H, i)
                    Cells(G, (i - j)) = Cells(G, (i - 1))
                    j = 0
                End Select
            End If
        Else
            j = j + 1
            i = i + 1
        End If
     Wend
    End Sub
    La macro avance jusqu'au Else, et m'indique une erreur "Else sans If", alors que je pensais fermer le deuxième If juste avant, et j'étais censé avoir encore le premier If à fermer.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Si tu veux créer une structure If, tu ne peux pas écrire If j = 0 Then i = i + 1.
    Une telle écriture n'est possible que si le Then n'engendre qu'une action. Et dans ce cas, le Else aussi doit être sur la même ligne et il ne doit pas y avoir de End If, la fin de ligne le remplaçant.

    En résumé, place ton i = i + 1 sur une autre ligne.

Discussions similaires

  1. [Turbo Pascal] Fusion de deux listes chaînées ordonnées
    Par attilaz dans le forum Turbo Pascal
    Réponses: 0
    Dernier message: 15/05/2012, 22h27
  2. Fusion de deux listes déroulante
    Par chtrousselle dans le forum Excel
    Réponses: 1
    Dernier message: 21/06/2011, 09h14
  3. Fusion de deux listes chainées
    Par schwuleur dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2011, 15h42
  4. fusion de deux liste simplement chainée
    Par mdh12 dans le forum Débuter
    Réponses: 6
    Dernier message: 14/01/2010, 19h23
  5. [J2EE/WEB]Fusion de 2 listes
    Par crewstyle dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/04/2007, 09h51

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