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 :

Macro de recherche multi critères [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Par défaut Macro de recherche multi critères
    Bonjour à tous,

    Je ne serais pas étonné que le sujet ai déjà été traité, mais après 4 heures de recherche je rends les armes et j'en m'en remet à vous.

    Voila mon problème :

    Je souhaite faire obtenir les valeur OUI ou NON dans une cellule selon 2 critères, l'un dans la colonne A et le second dans la Ligne 1.

    On m'a filé une feuille dans laquelle j'ai plusieurs fois la même personne (donc sur plusieurs lignes) car elle à plusieurs "affectations"
    NOM	AFFECTATION
    Nom 1	Affectation 1
    Nom 2	Affectation 1
    Nom 3	Affectation 1
    Nom 3	Affectation 2
    Nom 3	Affectation 3
    Nom 1	Affectation 3
    Nom 2	Affectation 2
    Nom 2	Affectation 3
    Je souhaite avoir une ligne (donc une personne) avec les affections en nom de colonne
    	Affectation 1	Affectation 2	Affectation 3
    Nom 1	OUI		NON		OUI
    Nom 2	OUI		OUI		OUI		         		
    Nom 3	OUI		OUI		OUI
    Voila donc mon premier blocage.

    La seconde chose que je souhaiterais faire pour faciliter la lecture :
    c'est d'associer une macro à un bouton qui à partir d'une liste déroulante (contenant les noms) m'afficherait une messageBox avec les affectations du nom choisi.


    D'avance merci de votre aide précieuse.

    PS : je débute vraiment en VBA, je fais mes premières armes mais je ne désespère pas d'aider les futurs "noob" d'ici quelques années de pratique

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Salut xxoc62

    Pour répondre à ta question
    Je souhaite avoir une ligne (donc une personne) avec les affections en nom de colonne
    Affectation 1 Affectation 2 Affectation 3
    Il te suffit de faire un Tableau Croisé Dynamique simple (hyper rapide).
    Pour le faire :
    1°)Sélectionne ton tableau (Nom et Affectation doivent être ds des cellules différentes)
    NOM AFFECTATION
    Nom 1 Affectation 1
    Nom 2 Affectation 1
    Nom 3 Affectation 1
    Nom 3 Affectation 2
    Nom 3 Affectation 3
    Nom 1 Affectation 3
    Nom 2 Affectation 2
    Nom 2 Affectation 3
    2°) Onglet Insertion puis Tableau Croisé Dynamique Puis OK
    3°) En colonne : Affectation - en lignes : Nom - ds Valeur : Nom (aussi)
    Et Voilà ton tableau est fait (certes tu a des 1 a la place de "Oui" mais c'est ce que tu veux.

    Il existe bien évidemment un Code VBA qui peut le faire aussi
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Option Explicit
    Option Base 1
     
    Public Lign As Long
    Public I, J As Interior
    Public Tab_Affec() As String 'Table mémoire qui contient ce que l'on veut comme tableau
    Public Trouv As Boolean
    Public Mess As String
     
     
    Public Const FeuilleData = "Feuil2"
     
    Sub Affectation()
        Sheets(FeuilleData).Select
        Trouv = False
        Lign = 2
        I = 1
        ReDim Tab_Affec(4, I)
        Do
            For I = 1 To UBound(Tab_Affec, 2)
                If Cells(Lign, 1).Value = Tab_Affec(1, I) Then
                    Call Charg_Tab
                    Trouv = True
                    Exit For
                End If
            Next
            If Trouv = False Then
                ReDim Preserve Tab_Affec(4, I)
                Call Charg_Tab
                I = I + 1
            Else
                Trouv = False
            End If
            Lign = Lign + 1
        Loop While Cells(Lign, 1).Value <> ""
        Mess = " Nom " & vbTab & "   Affectation1" & vbTab & " Affectation2" & vbTab & " Affectation3" & vbCrLf
        For I = 1 To UBound(Tab_Affec, 2)
            Mess = Mess & Tab_Affec(1, I) & "                " & Tab_Affec(2, I) & vbTab & _
                      "                           " & Tab_Affec(3, I) & _
                      "                   " & vbTab & Tab_Affec(4, I) & vbCrLf
        Next
     
        MsgBox Mess, vbInformation, "Liste des affectations"
     
    End Sub
    '-------------------------------------------------------------------------
    Sub Charg_Tab()
        Tab_Affec(1, I) = Cells(Lign, 1).Value
        Select Case Cells(Lign, 2).Value
            Case "Affectation 1"
                Tab_Affec(2, I) = "Oui"
            Case "Affectation 2"
                Tab_Affec(3, I) = "Oui"
            Case "Affectation 3"
                Tab_Affec(4, I) = "Oui"
            Case Else
                MsgBox "Affectation non prévu par le Programme ! ", vbCritical
        End Select
     
    End Sub
    Bon, la mise en forme du msgbox laisse à désirer mais cela fonctionne Bien

    -----------------------------------------------------------------------
    -----------------------------------------------------------------------
    Pour ta deuxième question
    La seconde chose que je souhaiterais faire pour faciliter la lecture :
    c'est d'associer une macro à un bouton qui à partir d'une liste déroulante (contenant les noms) m'afficherait une messageBox avec les affectations du nom choisi.
    Il me semble plus adéquat de créer un Userform.
    Mais avant je te conseille de te lire attentivement les tutoriaux présent sur le site (Ils sont très utile, et très bien fait)

    @ bientôt

    tu nous tiens au courant

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Par défaut
    Merci pour ta réponse Igloobel

    J'ai juste oublié de préciser que je peux avoir jusque 64 affectations...
    Je vais tenter le TCD, ça devrait pouvoir le faire.

    Pour le userform, je vais voir aujourd'hui.

    Je tiens informé bien évidemment.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Par défaut
    Bon j'ai bien avancé sur le userForm.

    A partir de l’identifiant de mon utilisateur, je récupère le nom et le prénom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ComboBox1_Change()
     
    Dim a1 As Integer
    Dim cherche1 As String
    Sheets("Feuil1").Select
    cherche1 = ComboBox1.Value
     
    a1 = Sheets("Feuil1").Cells.Find(What:=cherche1, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
    TextBox1 = Range("A" & a1).Offset(0, 1).Value
    TextBox2 = Range("A" & a1).Offset(0, 2).Value
     
    End Sub


    Par contre, je n'arrive toujours pas à afficher toutes ses affectations.
    Mon problème c'est que je n'arrive pas à retranscrire ma pensée ...

    Sur le principe :

    Je sélectionne l'identifiant ID

    Compte NB ID => On compte le nombre de fois ou l'on trouve l'ID
    i= NB_ID

    De 1 à i
    recherche de l'affectation correspondant à l'ID
    Affichage de l'affectation dans Frame.
    Si l'affectation = la précédente, on passe à la suivante.

    Ainsi de suite...

    L'idéal étant d'avoir la frame qui s'adapte au nombre de réponse.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Par défaut
    Bon,

    J'ai finis par trouver !


    Avec un petit bonus sur une mise en forme de la textbox sur un contrôle de valeur.

    Maintenant mon nouveau défis et de sortir la liste des utilisateurs qui ont un type de rôles précis mais pas un second.
    genre :
    Si role user = "role_BI*" <= * car plusieurs nombre possible derrière
    et si role_user "appui_BI" non trouvé

    alors copier user dans feuille "User KO"

    et on affecte la macro à un bouton

    Hum je vais me marrer

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 6
    Par défaut
    Bon bah j'ai trouvé tout seul, comme quoi des fois on est jamais mieux servis que par soi même...

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

Discussions similaires

  1. [AC-2010] Recherche Multi-critére via Macro,Sql et/ou Vba
    Par jaraf dans le forum Access
    Réponses: 11
    Dernier message: 22/05/2013, 11h31
  2. Recherche multi-critères
    Par PAUL87 dans le forum Access
    Réponses: 66
    Dernier message: 13/12/2005, 13h12
  3. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 20h33
  4. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 12h00
  5. Procédure stockée: recherche multi-critères
    Par biroule dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 01/09/2004, 17h02

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