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 :

Mon premier combobox : selection de la liste [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut Mon premier combobox : selection de la liste
    bonsoir

    je voudrais creer mon premier combobox. Il servira a effectuer une recherche dans une liste. Voila ma premiere macro pour deja remplir une liste deroulante pour effectuer mon choix, et bien sur ca ne marche pas. Merci pour votre aide
    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
     
    Private Sub ParMassif()
     
    Dim cell As Range
    Dim ParMassif As MSForms.ComboBox
     
     
     
    'Boucle sur les cellules de la plage A2:A1870 pour
    'alimenter le ComboBox
    For Each cell In Sheet("Liste").Range("A2:A1870")
        Liste.ParMassif = cell
        'remplissage sans doublon
        If Sheet("Liste").ParMassif.ListIndex = -1 Then _
            Sheet("Liste").ParMassif.AddItem cell
    Next cell
     
    End Sub

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    Ou est situé ton combobox,

    Dans un UF ?, c'est un controle activex directement sur la feuille?
    après, on verra

    a +
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    bonsoir il est dans un userform

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bon, ajoutes dans l'evenement initialise de ton UF, ce code :
    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
    With Sheets("liste")
    Dim x As Integer, plage As Range, nl As Integer, d as integer
    nl = .Range("A" & .Rows.Count).End(xlUp).Row
    'Boucle sur les cellules de la plage A2:A1870 pour
    'alimenter le ComboBox
    ParMassif.Clear
    For x = 2 To nl
    Set plage = .Range("a" & x + 1, "a" & nl)
     
        'remplissage sans doublon
        d = Application.WorksheetFunction.CountIf(plage, .Range("a" & x))
        If d = 0 Then
        ParMassif.AddItem .Range("a" & x)
        End If
    Next x
    End With
    ça devrait fonctionner
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    Merci beaucoup ca marche
    Dans mon UF j ai 3 combobox, si j ai bien compris je fais pareil pour les 2 autres en empilant dans le même code que le précédent en ajoutant des With et end with?

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'ai fait une erreur à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = .Range("a" & x + 1, "a" & nl)
    il faut l'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = .Range("a" & x + 1, "a" & nl + 1)
    sinon ta derniere ligne n'apparaitra pas dans le combobox

    pour les autres combobox, je ne sais pas car je ne connais pas ton fichier, essayes

    tu as compris with et end with ?,
    C'est simplement pour éviter de réecrire à chaque fois
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    bon voila j ai fait ca apparemment ca marche mais ca me parait long comme code je peux certainement réduire?
    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
    Private Sub UserForm_Initialize()
    'creation liste combobox massif
    With Sheets("Liste")
    Dim x As Integer, plage As Range, nl As Integer, d As Integer
    nl = .Range("A" & .Rows.Count).End(xlUp).Row
    'Boucle sur les cellules de la plage A2:A1870 pour
    'alimenter le ComboBox
    ParMassif.Clear
    For x = 2 To nl
    Set plage = .Range("a" & x + 1, "a" & nl + 1)
     
        'remplissage sans doublon
        d = Application.WorksheetFunction.CountIf(plage, .Range("a" & x))
        If d = 0 Then
        ParMassif.AddItem .Range("a" & x)
        End If
    Next x
    End With
    'creation liste combobox matricule
    With Sheets("Liste")
    Dim y As Integer, plage1 As Range, nli As Integer, c As Integer
    nli = .Range("c" & .Rows.Count).End(xlUp).Row
    'Boucle sur les cellules de la plage c2:c1870 pour
    'alimenter le ComboBox
    ParCode.Clear
    For x = 2 To nli
    Set plage1 = .Range("c" & x + 1, "c" & nl + 1)
     
        'remplissage sans doublon
        c = Application.WorksheetFunction.CountIf(plage, .Range("c" & x))
        If c = 0 Then
        ParCode.AddItem .Range("c" & x)
        End If
    Next x
    End With
    'creation liste combobox Par nom
    With Sheets("Liste")
    Dim z As Integer, plage2 As Range, nlig As Integer, e As Integer
    nlig = .Range("d" & .Rows.Count).End(xlUp).Row
    'Boucle sur les cellules de la plage d2:d1870 pour
    'alimenter le ComboBox
    ParNom.Clear
    For z = 2 To nl
    Set plage = .Range("d" & z + 1, "d" & nl + 1)
     
        'remplissage sans doublon
        e = Application.WorksheetFunction.CountIf(plage, .Range("d" & z))
        If d = 0 Then
        ParNom.AddItem .Range("d" & z)
        End If
    Next z
    End With
    End Sub

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    oui, tu as mis des variables un peu partout, mais je voudrais savoir si le nombre de lignes correspond pour les 3 references aux combo, parce qu'on pourrait bien soulagé, tout dépend de ce que tu dois faire, il serait bien que tu joignes un fichier afin de me rendre compte

    Sans connaitre ton fichier et ce que tu dois faire, j'ai corrigé ton code comme ça
    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
    Private Sub UserForm_Initialize()
    With Sheets("Liste")
    Dim x As Integer, plage As Range, nl As Integer, d As Integer, _
     c As Integer, plage1 As Range, plage2 As Range, e As Integer
    nl = .Range("A" & .Rows.Count).End(xlUp).Row
    parmassif.Clear
    ParCode.Clear
    ParNom.Clear
    For x = 2 To nl
    Set plage = .Range("a" & x + 1, "a" & nl + 1)
    Set plage1 = .Range("c" & x + 1, "c" & nl + 1)
    Set plage2 = .Range("d" & x + 1, "d" & nl + 1)
     
        'remplissage sans doublon
        d = Application.WorksheetFunction.CountIf(plage, .Range("a" & x))
        c = Application.WorksheetFunction.CountIf(plage, .Range("c" & x))
        e = Application.WorksheetFunction.CountIf(plage, .Range("d" & x))
     
        If d = 0 Then
        parmassif.AddItem .Range("a" & x)
        End If
        If c = 0 Then
        ParCode.AddItem .Range("c" & x)
        End If
        If e = 0 Then
        ParNom.AddItem .Range("d" & x)
        End If
     
     
    Next x
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    Bonjour
    Merci beaucoup pour ton travail c'est super et je commence a comprendre (j'ai dit "commence").
    Maintenant selon la selection dans les comboboxs, il va se passer differentes choses, peux tu m orienter?
    Si oui je t explique mon objectif et te joins le fichier.

    Mon fichier excel comporte 2 feuilles : Visio et Liste.
    Dans la feuille liste : tu as une liste de données gérées par massif (A01,A02, B01,J10..etc (82 massifs differents) dans ces massifs tu as differents noms (jean Dupont, Dominique Durand, etc).
    Chaque nom est identifié par un matricule de 6 chiffres en format texte (001204, 245632, 012548, etc..).
    Un meme nom peut se trouver plusieurs fois dans le meme massif ou dans differents massifs mais il portera un matricule different.

    Dans la feuille Visio : elle permet de visionner l'ensemble du contenu d'un massif. par exemple quand tu rentres B02 (nom du massif) dans la cellule f01 et tu clic sur le bouton avec photo chevreuil, il apparait dans cette feuille toutes les lignes concernées par le massif Bo2 avec les calculs necessaire.

    Maintenant les combobox de recherche va me servir à visionner un massifs (dans visio) selon 3 criteres :

    1. Recherche par massifs (surement le plus simple), il faut quand je selectionne un massif dans le combobox "Par massif", il faut que le code renvoie la selection dans la cellule F01 et applique la macro correspondant au bouton "chevreuil". Et dans les 2 autres combobox (par nom et par matricule) me presente un choix uniquement de ce massif.
    2. recherche par code(matricule), il faut quand je selectionne un matricule il faut que la macro selectionne le massif correspondant au matricule et fasse apparaitre le massif dans la feuille visio et surligne la ligne du matricule selectionné en vert.
    3.recherche par nom (plus compliqué), il faut quand je selectionne un nom il faut que la macro selectionne le massif correspondant au nom et fasse apparaitre le massif dans la feuille visio et surligne la ligne du nom selectionné en vert. Et comme je peux avoir le meme nom dans plusiuers massifs ou dans le meme massif, il faut que les combobox par massifs et par code me donne un choix a effectué.

    Voila, j espere que j'ai été assez explicite. je joins mon fichier. merci

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    bon j ai reussi a faire la selection par massif en réalisant ce code certes un peu lent pour l apparition de l userform.
    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
    Private Sub Valider_Click()
     
     'Blocage ecran
    Application.ScreenUpdating = False
     
    'suppression de la selection dans visio
    Range("A15:AH65536").EntireRow.Delete
    'selection de liste
    Sheets("Liste").Activate
    'active les filtres
     Sheets("Liste").Range("$A$1:$Ah$18").AutoFilter Field:=1, Criteria1:=ParMassif
    Range("a2:ah" & Range("a65536").End(xlUp).Row).Copy Destination:=Sheets("Visio").Range("a15")
    'Selection.AutoFilter Field:=1
     
    'retire le quadrillage
    ActiveWindow.DisplayGridlines = False
    'feuille visio
    Sheets("Visio").Activate
    'enlevefiltre sur e01:m01
     
        Range("E1:M2").Select
        Selection.AutoFilter
        'format date
       Range("Tableau2[Date demande]").Select
        Selection.NumberFormat = "dd/mm/yy;@"
     'selection de f01
        Range("f01").Select
     'Dé-Blocage ecran
    Application.ScreenUpdating = True
     
    End Sub
    Maintenant je voudrais effectuer la sélection par code(matricule) pour cela le critère (criterial1) de filtre est = ParCode - 2 cellules à gauche. 2 cellules a gauche se trouve le nom du massif.
    Quelqu'un peu m aider? merci

  11. #11
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir Dodo, le forum,
    Comme je n'ai pas trop le temps, pour l'instant, je me permets de reprendre ton code, en le disséquant :
    Private Sub Valider_Click()
    là, ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     'Blocage ecran
    Application.ScreenUpdating = False
    là, tu ne dis pas si les cellules doivent etre décalées vers la droite, vers le haut..., mais ce n'est peut-etre pas important
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'suppression de la selection dans visio
    Range("A15:AH65536").EntireRow.Delete
    là, tu as-tu vraiment besoin de voir ta feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'selection de liste
    Sheets("Liste").Activate
    sinon, tu supprimes la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'active les filtres
     Sheets("Liste").Range("$A$1:$Ah$18").AutoFilter Field:=1, Criteria1:=ParMassif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("Liste").Range("a2:ah" & Range("a65536").End(xlUp).Row).Copy Destination:=Sheets("Visio").Range("a15")
    'Selection.AutoFilter Field:=1
    ci-dessous, je ne connais pas le besoin de supprimer le quadrillage, mais toi, tu dois savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'retire le quadrillage
    ActiveWindow.DisplayGridlines = False
    là tu peut supprimer le "activate"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'feuille visio
    Sheets("Visio").Activate 'à supprimer
    'enlevefiltre sur e01:m01
    ci-dessous, je te conseille de changer le code à selection autofilter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Sheets("Visio").Range("E1:M2").Select
        if Selection.AutoFilter = true then
        selection.autofilter = false
        end if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'format date
           Range("Tableau2[Date demande]").NumberFormat = "dd/mm/yy;@"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     'selection de f01
        Range("f01").Select
     'Dé-Blocage ecran
    Application.ScreenUpdating = True 
    End Sub

    bon j ai reussi a faire la selection par massif en réalisant ce code certes un peu lent pour l apparition de l userform.
    Par contre, je ne vois pas où ton UF apparait
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    merci pour ton aide mais a chaque fois que je modifie quelques choses ca plante et même a un moment ça a supprimer toutes ma feuilles liste, oups
    Je te rejoins mon fichier et pour appeler le userform il faut cliquer sur le bouton recherche en visio.

  13. #13
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    re,

    je viens d'ouvrir ton fichier,

    Alors expliquoe-moi. J'ouvre l'UF, si je selectionne un nom dans la combo par_nom, tu veux voir apparaitre tous les massifs correspondant au nom, c'est ça ? ainsi que tous les codes ?

    je ne suis pas forestier pour 2 ronds meme si j'aime la nature, et ton tableau, je ne le comprends pas
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    Pas tout a fait forestier mais pas loin , je suis technicien de la gestion de la faune sauvage et de ses habitats. Si tu as des question sur ce sujet je m y ferai un grand plaisir. revenons a nos moutons, heu...non a nos chevreuils.

    Dans liste, il y a une colonne massifs(colonne A), chaque massif correspond a un ensemble de propriétaire. Dans un massif forestier, il y a plusieurs propriétaires. Un propriétaire est identifié par un matricule (colonne c). Le but quand j appelle un propriétaire tous les propriétaires du même massifs apparaissent dans visio.
    pour appeler un massif dans visio, il y a donc 3 solutions :
    - je sélectionne le nom du massif dans par massifs, exemple je sélectionne le massif A03, tous les propriétaires du massif A03 arrivent dans la feuille visio.
    - je sélectionne par matricule, exemple je sélectionne le matricule 043001, le matricule correspond à un propriétaire Porcher Lucette qui est propriétaire dans le massif B05 alors toutes les lignes ayant le massifs B05 doit apparaitre dans visio
    - Je sélectionne par nom, je recherche Porcher Lucette qui est propriétaire dans le B05 alors le B05 doit apparaitre dans visio.
    Pour comprendre, il faut imaginer que madame Porcher Lucette m'appele au telephone. elle me demande une question sur son massifs, par exemple combien il y a de propriétaire sur son massif? mais madame porcher ne se souvient plus du nom de son massif ni de son matricule.
    Alors je tape porcher lucette sur UF et toutes les données du massif arrivent dans la feuille visio.
    la même chose si elle a oublié son nom() et ne connais que son matricule (ha!La pauvre lucette). Je tape son matricule est le massif b05 arrive dans visio.
    Voila j espere que c'est pas trop penible. merci

  15. #15
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le forum, dodo28,

    Ci-dessous une partie de code qui ne s'occupe pas des filtres mais des entrées en combobox
    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
    Private Sub Valider_Click()
    Dim x As Integer, y As Integer
    Application.ScreenUpdating = False
    'suppression de la selection dans visio
    Sheets("visio").Range("A15:Ah65536").EntireRow.Clear
    With Sheets("liste")
    If ParMassif <> "" Then
        y = 15
        For x = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
            If .Range("a" & x).Value = ParMassif Then
            Sheets("visio").Range("a" & y).EntireRow.Value = .Range("a" & x).EntireRow.Value
            y = y + 1
            End If
        Next x
    End If
    If ParNom <> "" Then
        y = 15
        For x = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
            If .Range("d" & x).Value = ParNom Then
            Sheets("visio").Range("a" & y).EntireRow.Value = .Range("a" & x).EntireRow.Value
            y = y + 1
            End If
        Next x
    End If
    If ParCode <> "" Then
        y = 15
        For x = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
            If .Range("d" & x).Value = ParCode Then
            Sheets("visio").Range("a" & y).EntireRow.Value = .Range("a" & x).EntireRow.Value
            y = y + 1
            End If
        Next x
    End If
    End With
    Application.ScreenUpdating = True
    je n'ai pas regardé ce qui suivait, pour l'instant, regardes ce bout de code et dis-moi quoi, c'est sur qu'il sera à améliorer

    Bonne journée à tous
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    Bonjour Casefayer et le forum,

    Merci pour ton travail, c'est vraiment sympa. Alors je viens d'essayer ton code. Aprés avoir modifier le"d" en "c" dans la partie suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if ParCode <> "" Then
        y = 15
        For x = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
            If .Range("c" & x).Value = ParCode Then
            Sheets("visio").Range("a" & y).EntireRow.Value = .Range("a" & x).EntireRow.Value
            y = y + 1
            End If
        Next x
    End If
    Quand je fais une recherche par massif, pas de probleme ca marche. Tout le massif apparait dans visio.

    Quand je fais une recherche par code, juste la personne concernée par ce code apparait et il faudrait que ce soit tout le massif du code concernée.
    Exemple le code 096002 doit faire apparaitre dans la feuille visio tout le massif A01.
    Pareil pour la recherche par Nom.
    je crois qu'il faudrait penser comme ceci:
    si range("c"& x).value =ParCode alors regarder 2 cellules a gauche (nom du massif) puis selectionner toutes les lignes de la feuille "liste" correspondant a cette valeur.
    Merci

  17. #17
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    essaye ceci, en ajoutant une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If ParCode <> "" Then
    Set nomMassif = .Range("c2:c" & nl).Find(ParCode)
        y = 15
        For x = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
            If .Range("a" & x).Value = nomMassif.Offset(0, -2).Value Then
            Sheets("visio").Range("a" & y).EntireRow.Value = .Range("a" & x).EntireRow.Value
            y = y + 1
            End If
        Next x
    End If
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  18. #18
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    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
    Private Sub Valider_Click()
    Dim x As Integer, y As Integer
    Dim nomMassif As Range
    Application.ScreenUpdating = False
    'suppression de la selection dans visio
    Sheets("visio").Range("A15:Ah65536").EntireRow.Clear
    With Sheets("liste")
    'selection du massif ParCode
    If ParCode <> "" Then
    Set nomMassif = .Range("c2:c" & nl).Find(ParCode)
        y = 15
        For x = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
            If .Range("c" & x).Value = nomMassif.Offset(0, -2).Value Then
            Sheets("visio").Range("a" & y).EntireRow.Value = .Range("a" & x).EntireRow.Value
            y = y + 1
            End If
        Next x
    End If
    End With
    Application.ScreenUpdating = True
    End Sub
    Bon voila le code plante a Set. j'ai decompréssé un peu en gardant que la recherche par code pour bien le comprendre et quand on aura trouvé je ferai la meme chose pour la recherche par nom.
    Dans le set tu utilise une variable "nl" et elle n'est pas defini . l'erreur ne viendrait t elle pas de là.

  19. #19
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Excuses, j'ai oublié en début de code

    et après with sheeets("liste")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nl = .Range("A" & .Rows.Count).End(xlUp).Row
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  20. #20
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    Bon, il y a un mieux : ca ne plante plus mais il ne se passe rien.

    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
     
    Private Sub Valider_Click()
     
    Dim x As Integer, y As Integer
    Dim nomMassif As Range
    Dim nl As Integer
     
    Application.ScreenUpdating = False
     
    'suppression de la selection dans visio
    Sheets("visio").Range("A15:Ah65536").EntireRow.Clear
     
    With Sheets("liste")
    nl = .Range("A" & .Rows.Count).End(xlUp).Row
    'selection du massif par le code
    If ParCode <> "" Then
    Set nomMassif = .Range("c2:c" & nl).Find(ParCode)
        y = 15
        For x = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
            If .Range("c" & x).Value = nomMassif.Offset(0, -2).Value Then
            Sheets("visio").Range("a" & y).EntireRow.Value = .Range("a" & x).EntireRow.Value
            y = y + 1
            End If
        Next x
    End If
    end with
    end sub
    La, j ai un peu de mal

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 18
    Dernier message: 23/12/2009, 18h10
  2. [JSF] mon premier JSF:Cannot find FacesContext
    Par anitshka dans le forum JSF
    Réponses: 15
    Dernier message: 24/08/2007, 18h19
  3. Réponses: 14
    Dernier message: 29/04/2005, 11h59
  4. [debutant]Mon premier prog OpenGL
    Par Revan777 dans le forum OpenGL
    Réponses: 5
    Dernier message: 04/04/2005, 17h40
  5. Réponses: 8
    Dernier message: 05/05/2004, 16h28

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