Recherche dans tableau excel

G

Guest

Guest
Re : Recherche dans tableau excel

Bonsoir Zepeto,

Voici comme promis une solution pour rechercher suivant différents champs. (tous ceux de l'entête)

bonne soirée et à bientôt.
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Merci pour l'aide que tu m'apporte et celle que nous apporte le forum, je regarde sa et je te tiens au courant, en attendant passe une bonne journé.
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Un grand merci hasco je viens de voir ta PJ et elle marche nikel par contre j'avais une petite erreur sur le bouton "Suivant" et sa lancer le débogueur au niveau de cette ligne : btnSuivant.Enabled = "" , alors je me suis permis de mettre sa à la place :

btnSuivant.Caption = "Recommencer"
' btnSuivant.Enabled = ""
lblMsg = "Fin de la recherche"

et je n'ai plus d'erreur enfin c'est une correction de zepeto lol.
De plus, dans mon classeur complet j'ai 49 colonnes donc autant de possibilité dans le combobox de la recherche mais je voudrais n'en avoir que certain, alors je me demandé comment cacher les éléments qui sont apparu dans ma combobox que je ne désire pas?
Bonne fin de journé à toi et tout le forum
 
Dernière édition:

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Re :
disons que je trouve pas de moyen pour dire au combobox de n'afficher que "dénomination" et "adresse", je ne veut pas avoir la ville et le cp dans le combobox?
Merci de bien vouloir m'orienter ou même une idée
 
G

Guest

Guest
Re : Recherche dans tableau excel

Zepeto,

il te faut enlever les lignes qui les affiche, dans la boucle de recherche

Code:
                    tbCP = .Cells(c.Row, 3)
                    tbVille = .Cells(c.Row, 4)
Mais ça tu aurais pu le trouver tout seul...avec un peu d'effort:cool:

A bientôt
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Bonsoir hasco je pense que je me suis mal expliqué car se que tu me dit c'est pour que les champs cp et ville ne se remplisse pas, moi je voulais dire que je ne voulais pas les voir dans la combobox?
Merci pour ton aide
 
G

Guest

Guest
Re : Recherche dans tableau excel

Zepeto,

Remplace la procédure UserForm_Initialize par celle-ci

Code:
Private Sub UserForm_Initialize()
    Dim c As Range
    
    'Avec la combo qui contiendra les champs de recherche
    With cbChampRecherche
        'On créer Deux colonnes
        .ColumnCount = 2
        
        'On Cache la deuxième en lui donnant la valeur 0 comme largeur
        'Les largeurs de colonnes sont passée en chaine de caractères
        'séparées par des point-virgules.Valeurs exprimées en point (pt)
        .ColumnWidths = ";0pt"
        
        'On paramètre la colonne 1 comme colonne de référence
        'celle qui affiche le nom
        .BoundColumn = 1
        
        'Tant qu'une cellule vide n'est pas trouvée dans la ligne 1
        Set c = Sheets("proc").Cells(1, 1)
        Do
            'Si la colonne (en majuscule) n'est pas ni "CP" ni "VILLE"
            If UCase(c) <> "CP" And UCase(c) <> "VILLE" Then
            'On ajoute l'étiquette de colonne de la feuille
            'Dans la première colonne de la combo
            .AddItem c.Value
            'Dans la deuxième on garde l'index ce la colonne de la feuille
            'La numérotation des colonnes des combo commence à 0 =>1=la deuxième
            .List(.ListCount - 1, 1) = c.Column
            End If
            Set c = c.Offset(, 1)
            
        Loop While Not IsEmpty(c)
        
        'On paramètre par défaut le champ de recherche sur le premier
        If .ListCount > -1 Then .ListIndex = 0
        
    End With
    
End Sub
bonne soirée
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Bonjour hasco ta solution marche avec un petit nombre mais sachant que j'ai 49 colonne donc autant dans ma combobox.
Le probléme est que ma condition est tellement grande qu'elle s'étant sur 2 lignes et sa sa marche pas?
J'ai renommé mais colonne avec des noms plus court pour que sa passe mais c'est pas trés optimisé, en tout cas merci
 
G

Guest

Guest
Re : Recherche dans tableau excel

Zepeto,

Donne un fichier avec les Nom des 49 colonnes en mettant en évidence celles que tu veux et celles que tu ne veux pas.

A bientôt
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Ne t'embéte pas pour sa sa ira avec des noms raccourcis lol.
J'ai mis se que je voulais plutôt que se que je voulais pas et sa donne sa :
If UCase(c) = "DENOMINATION" Or UCase(c) = "ADRESSE" Or UCase(c) = "CCP" Then
Par contre dans ma combobox j'aimerais pouvoir choisir de faire ma recherche sur le "mandataire" et pour sa il faudrait que je rajoute dans la combobox un élément par exemple "mandataire" qui regroupe les colonnes peinte en jaunes dans mon classeur (ce sont les noms des mandataires) ?
Merci
 

Fichiers joints

Dernière édition:
G

Guest

Guest
Re : Recherche dans tableau excel

Zepeto,

combien de fois tu vas me faire refaire le travail! Je crois que je perds patiente.

Désolé.
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Désolé hasco mais c'est le dernier éléments de recherche dont j'ai besoin.
De plus j'aprécis ton travail bien commenté, alors ne me lache pas si prés du but stp et merci pour ton aide qui m'aura permis d'avancer tout en comprenant
En attendant j'ai tenter ceci mais cela ne marche pas je pensé que c'était un truc comme sa :

MANDATAIRE = (UCase(c) = "N1") + (UCase(c) = "N2") + (UCase(c) = "N3") + (UCase(c) = "N4") + (UCase(c) = "N5")
If UCase(c) = "DENOMINATION" Or UCase(c) = "ADRESSE" Or UCase(c) = "CCP" Or MANDATAIRE Then

Mais sa affiche pas mon MANDATAIRE mais les N1, N2, ...,N5.
 
Dernière édition:
G

Guest

Guest
Re : Recherche dans tableau excel

Re Zepeto,

Voici une dernière mouture du remplissage de la combobox basé cette fois sur le numéro des colonnes. A toi de vérifier et de changer éventuellement les numéros

Code:
Private Sub UserForm_Initialize()
    Dim c As Range
    Dim bAjout As Boolean
    'Avec la combo qui contiendra les champs de recherche
    With cbChampRecherche
        'On créer Deux colonnes
        .ColumnCount = 2
 
        'On Cache la deuxième en lui donnant la valeur 0 comme largeur
        'Les largeurs de colonnes sont passée en chaine de caractères
        'séparées par des point-virgules.Valeurs exprimées en point (pt)
        .ColumnWidths = ";0pt"
 
        'On paramètre la colonne 1 comme colonne de référence
        'celle qui affiche le nom
        .BoundColumn = 1
 
        'Tant qu'une cellule vide n'est pas trouvée dans la ligne 1
        Set c = Sheets("proc").Cells(1, 1)
        Do
           'La variable bAjout permet de savoir si après évaluationdu 
           'numéro de colonne il faut le rajouter ou non à la combo
            bAjout = False
            Select Case c.Column
                ' ici les numéro unique de colonne à ajouter à la liste
                Case 1, 2, 12, 16, 20, 24, 28: bAjout = True
                'ici toutes les colonnes dont les numéro sont > à 36
                Case Is > 36: bAjout = True
            End Select
            If bAjout Then
                'On ajoute l'étiquette de colonne de la feuille
                'Dans la première colonne de la combo
                .AddItem c.Value
                'Dans la deuxième on garde l'index ce la colonne de la feuille
                'La numérotation des colonnes des combo commence à 0 =>1=la deuxième
                .List(.ListCount - 1, 1) = c.Column
            End If
            Set c = c.Offset(, 1)
 
        Loop While Not IsEmpty(c)
 
        'On paramètre par défaut le champ de recherche sur le premier
        If .ListCount > -1 Then .ListIndex = 0
 
    End With
 
End Sub
A+
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

J'ai encore du mal m'expliquer :
Se que je voulais dire c'est avoir un élément dans la combobox qui contienne tous les noms des mandatiares (soit les colonnes que j'ai peint en jaunes dans le classeur précédent)?
Merci
 
G

Guest

Guest
Re : Recherche dans tableau excel

Zepeto,

J'avais bien compris mais il faudrait refaire toute la procédure de sélection des colonnes. Et ça je me refuse à le faire.

A bientôt
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Bonsoir hasco, je viens de creer un bouton supprimer permettant comme son nom l'indique de supprimer une ligne du tableau et plus précisément celle que l'on à rechercher.
Toutefois, la suppression ne marche pas alors que j'ai fait des recherche, de plus, j'ai fait des test en affichant les valeurs que je garde en memoire mais sa ni fait rien.
Merci pour ton aide inestimable.
Voici mon code :

Private Sub supprimer_Click()
'il faut pouvoir supprimer la ligne du tableau excel, soit supprimer les informations que l'on à rechercher et qui sont afficher dans les textbox
If cbChampRecherche = "" Then Exit Sub
Msg = "Voulez vous détruire la procuration?"
Style = vbYesNo + vbExclamation + vbDefaultButton2
Title = "Confirmation Effacement "
Réponse = MsgBox(Msg, Style, Title)
If Réponse = 7 Then Exit Sub
'on détermine la colonne avec i
ligne = 1
Selection = tbdenomination
If cbChampRecherche = "denomination" Then
i = 1
Else
If cbChampRecherche = "adresse" Then
i = 2
End If
End If
'MsgBox i
'on détermine l'élément de comparaison
If i = 1 Then
elementSelection = tbdenomination
Else
If i = 2 Then
elementSelection = tbAdresse
End If
End If
'MsgBox elementSelection
'dés que l'élément chercher est trouvé on sort de la boucle
While Sheets("proc").Cells(ligne, i) <> elementSelection
ligne = ligne + 1
Wend
'on récupére la valeur de ligne qui nous indique la ligne à supprimer
'MsgBox ligne
Sheets("proc").Rows(ligne).Delete Shift:=xlUp
MsgBox (" Suppression réalisé avec succès")
Call Initialise_Recherche

End Sub
 
G

Guest

Guest
Re : Recherche dans tableau excel

Zepeto,

Je vois que tu n'as pas compris comment fonctionnait le programme.

Mais voici ta macro Supprimer modifiée:

Code:
Private Sub supprimer_Click()
'il faut pouvoir supprimer la ligne du tableau excel, soit supprimer les informations que l'on à rechercher et qui sont afficher dans les textbox
 If Recherche.cbChampRecherche = "" Then Exit Sub
 Msg = "Voulez vous effacer l'entreprise?"
    Style = vbYesNo + vbExclamation + vbDefaultButton2
    Title = "Confirmation Effacement "
    Réponse = MsgBox(Msg, Style, Title)
    If Réponse = vbNo Then Exit Sub
    
    If Not [SIZE=5][COLOR=red]c[/COLOR][/SIZE] Is Nothing Then [SIZE=5][COLOR=red]c[/COLOR][/SIZE].EntireRow.Delete xlShiftUp
    MsgBox (" Suppression réalisé avec succès")
    Call Initialise_Recherche
    
End Sub
Rajoute la ligne suivant dans la procédure Initialise_Recherche:
Code:
Set c=Nothing
Ligne qui efface la référence à toute cellule.

La variable C (Déclarée en tête de module) est un objet Range (Cellule) qui représente la cellule trouvée tu peux donc y faire référence ainsi qu'à sa ligne et ou sa colonne pour supprimer ou modifier les informations.

A+
 

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Effectivement je n'avais pas tout compris mais je te remercie et passe un bon week-end
 

Lii

XLDnaute Impliqué
Re : Recherche dans tableau excel

Bonjour,

Pour m'être amusé un peu, à tester.
Pour le premier fichier, introduction de la variable Ici.
Pour le second, une autre présentation.
Je n'ai pas étudié les cas d'erreurs (saisie vide par exemple).
 

Fichiers joints

zepeto

XLDnaute Occasionnel
Re : Recherche dans tableau excel

Bonjour, je regarde sa dans la journé et encore merci de ton aide
 

Discussions similaires


Haut Bas