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

Vue hybride

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

+ 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