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 :

parcours de tableau a plusieurs entrées (algo)


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Par défaut parcours de tableau a plusieurs entrées (algo)
    Bonjour a tous,

    je post aujourd'hui pour un problème d'algorithmie sur le parcours d'un tableau.

    voici mon tableau à la base :



    ce que je souhaite est d'arriver a ce point :




    explication : pour chaque user je voudrais savoir si on retrouve VAL dans la Colonne VAL1 correpondant a l'utilisateur,si oui je met un 1 sur la meme ligne Colonne A,

    et meme chose pour la colonne VAL 2 :
    pour chaque user je voudrais savoir si on retrouve VAL dans la Colonne VAL2 correpondant a l'utilisateur,si oui je met un 1 sur la même ligne Colonne B,



    contrainte (si c'est vraiment une contrainte): il peut y avoir plus de ligne pour un meme user dans tableau 1 que dans tableau 2 et vice versa

    j'aurai besoin d'aide pour savoir quelles sont les boucles à utiliser (for, do loop...)
    et comment les imbriquer


    ps: (tableau 1 fait 33000 lignes)

    merci à tous

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    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
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Sub test()
     
    For i = 2 To Worksheets("Feuil2").Range("A1").End(xlDown).Row
        If Worksheets("Feuil2").Cells(i, 1).Value = "U2" Then
            For j = 2 To Worksheets("Feuil1").Range("A1").End(xlDown).Row
                If Worksheets("Feuil1").Cells(j, 1).Value = "U2" Then
                    If Worksheets("Feuil2").Cells(i, 2).Value = Worksheets("Feuil1").Cells(j, 2).Value Then
                        Worksheets("Feuil1").Cells(j, 4).Value = "1"
                    End If
                End If
            Next
        End If
        If Worksheets("Feuil2").Cells(i, 1).Value = "U3" Then
            For k = 2 To Worksheets("Feuil1").Range("A1").End(xlDown).Row
                If Worksheets("Feuil1").Cells(k, 1).Value = "U3" Then
                    If Worksheets("Feuil2").Cells(k, 2).Value = Worksheets("Feuil1").Cells(k, 2).Value Then
                        Worksheets("Feuil1").Cells(k, 4).Value = "1"
                    End If
                End If
            Next
        End If
    Next
     
    End Sub
    Testé et ça marche. Tableau 1 est sur Feuil1 et Tableau 2 est sur Feuil2.

    Tu n'as plus qu'à adapter pour :
    - Si jamais tu veux rajouter des choses dans ton tableau 2
    - Je ne l'ai fait que pour Val1. Tu n'as que du copier/coller à faire pour Val2 en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Cells(j, 2).Value
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Cells(j, 3).Value
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Cells(j, 4).Value = "1"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Cells(j, 5).Value = "1"
    et pareil pour k.

    C'est moche (je l'admets) mais j'avais la flegme de faire plus. Si quelqu'un veut optimiser

    Bonne chance pour la suite !

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Par défaut
    c'est plus que de l'aide que tu me donnes là...

    merci infiniment,

    je test...

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Une solution par formule peut aussi faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((Feuil2!$A$2:$A$10=Feuil1!$A2)*(Feuil2!$B$2:$B$10=Feuil1!B2)*1)
    En D2 et glisser en E2
    ++
    Minick

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Par défaut
    merci pour cette solution aussi.

    c'est vrai que la solution par fonction est plus efficace et plus rapide a mettre en oeuvre.

    mes 2 tableaux ont 33000 entrées chacuns.

    j'ai utilisé la fonction concatener pour concatener le matricule et la val1 et pareil pour la val2

    pareil pour le 2 eme tableau.

    ca m'a permis d'avoir un identifiant unique. ensuite avec un rechercheV classique ca fonctionne....

    OUF...

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par cesium Voir le message
    ca fonctionne....
    OUF...
    Un petit clic sur le bouton ?

    Merci
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Et avec une formule?
    Cette formule considère que ton 1er tableau commence en colonne A, que le 2eme et séparé du 1er par une seul colonne (il commence donc en G)
    Les entêtes de colonnes se trouvent sur la ligne 2

    Place cette formule dans la 1er cellule juste sous le "A" et étends la en bas et sur la gauche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERREUR(EQUIV(B3;DECALER(DECALER($G$1;EQUIV($A3;$G:$G;0)-1;0);0;1;NB.SI($G:$G;"=" & $A3));0));"";1)
    Si je n'ai pas fais d'erreur elle réalise ce que tu souhaite sans avoir besoin de passer par le vba.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. [WB18] Problème de parcours de tableau à plusieurs dimensions de chaîne
    Par fabian_RemLab dans le forum WebDev
    Réponses: 0
    Dernier message: 14/06/2015, 00h46
  2. [PHP 5.2] Tri tableau plusieurs entrées
    Par ju0123456789 dans le forum Langage
    Réponses: 6
    Dernier message: 21/03/2013, 16h57
  3. Parcours d'un tableau avec plusieurs objets
    Par aShtk dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 14/01/2012, 13h13
  4. Tableau croisée à plusieurs entrées
    Par windsor dans le forum WinDev
    Réponses: 2
    Dernier message: 25/08/2010, 12h58
  5. Réponses: 1
    Dernier message: 03/03/2009, 09h26

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