OVH Cloud OVH Cloud

recherche macro

4 réponses
Avatar
David
Bonjour à tous

Dans un UserForm j'ai une ListBox affichant les données de la première
colonne de la feuille BD. Dans cette UserForm, j'ai également une dizaine de
TextBox affichant les données des autres colonnes. En cliquant sur une
donnée de la ListBox cela m'affiche dans les TextBox les données
correspondantes.
Dans la colonne K de la feuille BD, j'ai 2 valeurs différentes ("Partiel" et
"Total") ou vide.

J'aimerais récupérer dans cette listBox que les données correspondant à
Partiel ou vide.

J'aimerais également avoir un bouton "Archive" pouvant mettre le mot "Total"
dans la colonne K de la ligne correspondant au choix.

Pas très clair tout ça, je le sent !!!!

Merci à celui qui aura compris

Salutations

David

4 réponses

Avatar
Pounet95
Bonjour David,
Je pense avoir compris que la listbox ne doit être remplie qu'avec les
données de la colonne A pour lesquelles
en correspondance en colonne K il y a ou "Partiel" ou rien !
A mon avis , 2 possibilités :
1) effectuer un filtre élaboré avec résultat dont la plage serait nommée sur
une autre feuille,
2) remplir la liste par une boucle ( For ... Next, Do While ...Loop ) lisant
les cellules de la colonne A
en séquence et en ajoutant au fur et à mesure les valeurs valides
(üt(col K) )

Reviens ici si tu veux plus d'aide.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"David" <(Pas de Spam) a écrit dans le message
de news: %23rTayqK$
Bonjour à tous

Dans un UserForm j'ai une ListBox affichant les données de la première
colonne de la feuille BD. Dans cette UserForm, j'ai également une dizaine
de
TextBox affichant les données des autres colonnes. En cliquant sur une
donnée de la ListBox cela m'affiche dans les TextBox les données
correspondantes.
Dans la colonne K de la feuille BD, j'ai 2 valeurs différentes ("Partiel"
et
"Total") ou vide.

J'aimerais récupérer dans cette listBox que les données correspondant à
Partiel ou vide.

J'aimerais également avoir un bouton "Archive" pouvant mettre le mot
"Total"
dans la colonne K de la ligne correspondant au choix.

Pas très clair tout ça, je le sent !!!!

Merci à celui qui aura compris

Salutations

David



Avatar
David
Bonjour et merci Pounet95

Je veux bien un peux plus d'aide.

En fait j'utilise ceci pour initialiser ma ListBox

L1 = Sheets("BD").Range("A65536").End(xlUp).Row
Plage = Sheets("BD").Range("A2:R" & L1).Address
ListBox1.RowSource = "BD!" & Plage

Le problème c'est que je filtre pas sur la colonne R et je sais pas faire.

Grâce à l'enregistreur j'obtient ceci :

Selection.AutoFilter Field:, Criteria1:="<>Réglée", Operator:=xlAnd

Comment "compiler" les deux

Merci de votre aide

David
Avatar
Pounet95
Re,
Etant donné que tu utilises une plage nommée pour la propriété RowSource du
Listbox, je te propose d'en constituer une
à partir d'un filtre élaboré ( c'est peu différent de l'automatique ! )

Voici un code à adapter en fonction de tes besoins. A mettre dans le module
du Userform
Attention aux lignes coupées !!!

Private Sub UserForm_Initialize()
Crée_Filtre_Elaboré
ListBox1.RowSource = "MaListe"
End Sub

Private Sub Crée_Filtre_Elaboré()
'la base de donnée occupe les colonnes A, et C
'la ligne 1 contient le nom des colonnes
'Créer les différentes plages du filtre
'copie les noms des champs A1 à C1 en F1 et F6
Sheets("Feuil1").Activate
Range("A1:C1").Copy
Range("F1,F6").Activate
Range("F6").Activate
ActiveSheet.Paste
'Définit la zone des données
Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Names.Add Name:="MaPlage", _
RefersToR1C1:="þuil1!R1C1:R10C3"
'Définit la zone des Critères
'sur 2 lignes car utilise Partiel OU vide
Range("F1:H3").Select
ActiveWorkbook.Names.Add Name:="MesCritères", _
RefersToR1C1:="þuil1!R1C6:R3C8"
'Définit la zone d'Extraction
Range("F6:H6").Select
ActiveWorkbook.Names.Add Name:="MonRésultat", _
RefersToR1C1:="þuil1!R6C6:R6C8"
'Pose les Critères
Range("H2").Select
ActiveCell.FormulaR1C1 = "Partiel"
Range("H3").Select
ActiveCell.FormulaR1C1 = "'="
'Extrait les données
Range("MaPlage").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Range( _
"MesCritères"), CopyToRange:=Range("MonRésultat"), Unique:úlse
'Détermine la liste pour le RowSource
lig = Range("F65536").End(xlUp).Row
Select Case lig
Case 6
'il n'y a pas de donnée pour les critères
Case 7
'une seule ligne
Range("F7:F7").Select
Case Else
'plusieurs lignes
Range("F7:F" & lig).Select
End Select
'Nomme la liste
ActiveWorkbook.Names.Add Name:="MaListe", RefersToR1C1:=Selection
'Renseigne la propriété RowSource
ListBox1.RowSource = "MaListe"
End Sub

Cela devrait permettre de voir le principe
Si problème, demande. Il y aura toujours quelqu'un pour répondre

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

"David" <(Pas de Spam) a écrit dans le message
de news: u83QqYM$
Bonjour et merci Pounet95

Je veux bien un peux plus d'aide.

En fait j'utilise ceci pour initialiser ma ListBox

L1 = Sheets("BD").Range("A65536").End(xlUp).Row
Plage = Sheets("BD").Range("A2:R" & L1).Address
ListBox1.RowSource = "BD!" & Plage

Le problème c'est que je filtre pas sur la colonne R et je sais pas faire.

Grâce à l'enregistreur j'obtient ceci :

Selection.AutoFilter Field:, Criteria1:="<>Réglée", Operator:=xlAnd

Comment "compiler" les deux

Merci de votre aide

David



Avatar
David
bonjour et merci

je vais essayer tout cela. Je reviens si besoin

Salutations