J'essai de faire apparaitre dans une ListBox le résultat d'un filtre.
Merci de m'aider une nouvelle fois !!
J'ai essayé avec ce bout de code mais bon ...erreur "impossible de définir
la propriété RowsSource"
Private Sub Filtrer_Click()
Dim a As Single
Dim b As Single
a = CDate(Text1)
b = CDate(Text2)
Dim Filtre As Integer
Dim Plage As Range
Liste1.RowSource = Sheets("Feuil1").Range("A65536").End(xlUp).Row
Liste1.ListIndex = -1
Set Plage = Sheets("Feuil1").Range("A1:J" & Liste1.RowSource)
Plage.AutoFilter Field:=1, Criteria1:=">=" & a, Operator:=xlAnd,
Criteria2:="<=" & b
"DAVID" a écrit dans le message de groupe de discussion : eeorP$ Re à vous 2
Daniel, meme disposition. Cela fonctionne bien avec ton modèle alors je fais un copier/coller vers mon projet et la rien ne fait, toujours la meme erreur.
Michdenis, je comprend très bien que ca doit être dur à lire surtout avec le temps que tu m'accorde ! mais je rame, malheureusement, completement dans tes explications. J'ai passé l'aprés midi à essayer de relire toutes tes explications, de faire à la lettre ce que tu me conseil ( idem sur le fil "Erreur double Clic"). Rien y fait, je désespère à finir mon projet ! mais bon, j'ai pas l'habitude de laisser tomber et j'aimerais comprendre. J'attend le déclic qui fait !!!! A mon avis, tout est dans la façon de charger le listbox. Comme tu m'as expliqué, il faut faire autrement mais pas moyen de le faire. Allez je vais replancher sur ce problème
"DAVID" <direction-ternoise@wanadoo.fr> a écrit dans le message de groupe de discussion :
eeorP$FmKHA.4148@TK2MSFTNGP05.phx.gbl...
Re à vous 2
Daniel, meme disposition. Cela fonctionne bien avec ton modèle alors je fais
un copier/coller vers mon projet et la rien ne fait, toujours la meme
erreur.
Michdenis, je comprend très bien que ca doit être dur à lire surtout avec le
temps que tu m'accorde ! mais je rame, malheureusement, completement dans
tes explications. J'ai passé l'aprés midi à essayer de relire toutes tes
explications, de faire à la lettre ce que tu me conseil ( idem sur le fil
"Erreur double Clic"). Rien y fait, je désespère à finir mon projet ! mais
bon, j'ai pas l'habitude de laisser tomber et j'aimerais comprendre.
J'attend le déclic qui fait !!!!
A mon avis, tout est dans la façon de charger le listbox. Comme tu m'as
expliqué, il faut faire autrement mais pas moyen de le faire. Allez je vais
replancher sur ce problème
"DAVID" a écrit dans le message de groupe de discussion : eeorP$ Re à vous 2
Daniel, meme disposition. Cela fonctionne bien avec ton modèle alors je fais un copier/coller vers mon projet et la rien ne fait, toujours la meme erreur.
Michdenis, je comprend très bien que ca doit être dur à lire surtout avec le temps que tu m'accorde ! mais je rame, malheureusement, completement dans tes explications. J'ai passé l'aprés midi à essayer de relire toutes tes explications, de faire à la lettre ce que tu me conseil ( idem sur le fil "Erreur double Clic"). Rien y fait, je désespère à finir mon projet ! mais bon, j'ai pas l'habitude de laisser tomber et j'aimerais comprendre. J'attend le déclic qui fait !!!! A mon avis, tout est dans la façon de charger le listbox. Comme tu m'as expliqué, il faut faire autrement mais pas moyen de le faire. Allez je vais replancher sur ce problème
Merci à vous deux
Daniel.C
Voila : http://www.cijoint.fr/cjlink.php?file=cj201001/cijXcqFI5e.xls C'est le premier classeur, dans lequel j'ai importé l'userform manquant. Le plantage était dû au fait que [_filterdatabase] n'était pas sur la feuille active : Il fallait mettre : Set Plage1 = Sheets("HISTOCARBU").[_filterdatabase].Offset(1) au lieu de : Set Plage1 = [_filterdatabase].Offset(1) La différence avec mon classeur tient au fait que le bouton d'affichage du userform est sur la feuille BD. Daniel
Désolé
Voici le fichier complet, au moins je suis sûre que tu a tout !!
Voila :
http://www.cijoint.fr/cjlink.php?file=cj201001/cijXcqFI5e.xls
C'est le premier classeur, dans lequel j'ai importé l'userform
manquant.
Le plantage était dû au fait que [_filterdatabase] n'était pas sur la
feuille active :
Il fallait mettre :
Set Plage1 = Sheets("HISTOCARBU").[_filterdatabase].Offset(1)
au lieu de :
Set Plage1 = [_filterdatabase].Offset(1)
La différence avec mon classeur tient au fait que le bouton d'affichage
du userform est sur la feuille BD.
Daniel
Désolé
Voici le fichier complet, au moins je suis sûre que tu a tout !!
Voila : http://www.cijoint.fr/cjlink.php?file=cj201001/cijXcqFI5e.xls C'est le premier classeur, dans lequel j'ai importé l'userform manquant. Le plantage était dû au fait que [_filterdatabase] n'était pas sur la feuille active : Il fallait mettre : Set Plage1 = Sheets("HISTOCARBU").[_filterdatabase].Offset(1) au lieu de : Set Plage1 = [_filterdatabase].Offset(1) La différence avec mon classeur tient au fait que le bouton d'affichage du userform est sur la feuille BD. Daniel
Désolé
Voici le fichier complet, au moins je suis sûre que tu a tout !!
Un très bon fichier pour exemple et apprendre que je recommande aux novices comme moi !!!
Je comprend mieux quand tu disais :
Pour déterminer ta plage nommée , tu utilises ce type de formule Si tu supprimes la ligne A2, tu obtiens des #Ref et ta formule est foutue ! =SOMME(DECALER($A$2;;;NBVAL(A:A)-1;NBVAL(1:1)))
En fait, si je comprend, c'est pas très bien de déterminer une plage avec Insertion/Nom/Définir pour un ListBox
Encore merci Bonne soirée
Merci c'est super génial de ta part.
Un très bon fichier pour exemple et apprendre que je recommande aux novices
comme moi !!!
Je comprend mieux quand tu disais :
Pour déterminer ta plage nommée , tu utilises ce type de formule
Si tu supprimes la ligne A2, tu obtiens des #Ref et ta formule est foutue
!
=SOMME(DECALER($A$2;;;NBVAL(A:A)-1;NBVAL(1:1)))
En fait, si je comprend, c'est pas très bien de déterminer une plage avec
Insertion/Nom/Définir pour un ListBox
Un très bon fichier pour exemple et apprendre que je recommande aux novices comme moi !!!
Je comprend mieux quand tu disais :
Pour déterminer ta plage nommée , tu utilises ce type de formule Si tu supprimes la ligne A2, tu obtiens des #Ref et ta formule est foutue ! =SOMME(DECALER($A$2;;;NBVAL(A:A)-1;NBVAL(1:1)))
En fait, si je comprend, c'est pas très bien de déterminer une plage avec Insertion/Nom/Définir pour un ListBox
Encore merci Bonne soirée
DAVID
Merci beaucoup Daniel, maintenant je vais essayer d'adapter tout cela.
J'essai de comprendre et de prendre des modèles pour me perfectionner mais il y a encore du très gros boulot !!!
Bonne soirée
Merci beaucoup Daniel, maintenant je vais essayer d'adapter tout cela.
J'essai de comprendre et de prendre des modèles pour me perfectionner mais
il y a encore du très gros boulot !!!
Merci beaucoup Daniel, maintenant je vais essayer d'adapter tout cela.
J'essai de comprendre et de prendre des modèles pour me perfectionner mais il y a encore du très gros boulot !!!
Bonne soirée
michdenis
Le même fichier + quelques légères correction. http://www.cijoint.fr/cjlink.php?file=cj201001/cijxw6UI3X.xls
| En fait, si je comprend, c'est pas très bien de déterminer | une plage avec Insertion/Nom/Définir pour un ListBox
Ce n'est pas ce que j'ai dit. Cela dépend de ton application. Dans certains cas, un listbox peut seulement servir pour l'affichage... mais si on doit supprimer des données dans le tableau principale, il faut d'avance penser aux conséquences que cela peut avoir quant à la manière utilisée pour définir son Listbox ou combobox ! Il y a plusieurs façons de faire, il s'agit de sélectionner celle qui convient le mieux à son application.
"DAVID" a écrit dans le message de groupe de discussion :
Merci c'est super génial de ta part.
Un très bon fichier pour exemple et apprendre que je recommande aux novices comme moi !!!
Je comprend mieux quand tu disais :
Pour déterminer ta plage nommée , tu utilises ce type de formule Si tu supprimes la ligne A2, tu obtiens des #Ref et ta formule est foutue ! =SOMME(DECALER($A$2;;;NBVAL(A:A)-1;NBVAL(1:1)))
En fait, si je comprend, c'est pas très bien de déterminer une plage avec Insertion/Nom/Définir pour un ListBox
Encore merci Bonne soirée
Le même fichier + quelques légères correction.
http://www.cijoint.fr/cjlink.php?file=cj201001/cijxw6UI3X.xls
| En fait, si je comprend, c'est pas très bien de déterminer
| une plage avec Insertion/Nom/Définir pour un ListBox
Ce n'est pas ce que j'ai dit. Cela dépend de ton application.
Dans certains cas, un listbox peut seulement servir pour
l'affichage... mais si on doit supprimer des données dans
le tableau principale, il faut d'avance penser aux conséquences
que cela peut avoir quant à la manière utilisée pour définir son
Listbox ou combobox ! Il y a plusieurs façons de faire, il s'agit
de sélectionner celle qui convient le mieux à son application.
"DAVID" <direction-ternoise@wanadoo.fr> a écrit dans le message de groupe de discussion :
epxFX7HmKHA.1652@TK2MSFTNGP05.phx.gbl...
Merci c'est super génial de ta part.
Un très bon fichier pour exemple et apprendre que je recommande aux novices
comme moi !!!
Je comprend mieux quand tu disais :
Pour déterminer ta plage nommée , tu utilises ce type de formule
Si tu supprimes la ligne A2, tu obtiens des #Ref et ta formule est foutue
!
=SOMME(DECALER($A$2;;;NBVAL(A:A)-1;NBVAL(1:1)))
En fait, si je comprend, c'est pas très bien de déterminer une plage avec
Insertion/Nom/Définir pour un ListBox
Le même fichier + quelques légères correction. http://www.cijoint.fr/cjlink.php?file=cj201001/cijxw6UI3X.xls
| En fait, si je comprend, c'est pas très bien de déterminer | une plage avec Insertion/Nom/Définir pour un ListBox
Ce n'est pas ce que j'ai dit. Cela dépend de ton application. Dans certains cas, un listbox peut seulement servir pour l'affichage... mais si on doit supprimer des données dans le tableau principale, il faut d'avance penser aux conséquences que cela peut avoir quant à la manière utilisée pour définir son Listbox ou combobox ! Il y a plusieurs façons de faire, il s'agit de sélectionner celle qui convient le mieux à son application.
"DAVID" a écrit dans le message de groupe de discussion :
Merci c'est super génial de ta part.
Un très bon fichier pour exemple et apprendre que je recommande aux novices comme moi !!!
Je comprend mieux quand tu disais :
Pour déterminer ta plage nommée , tu utilises ce type de formule Si tu supprimes la ligne A2, tu obtiens des #Ref et ta formule est foutue ! =SOMME(DECALER($A$2;;;NBVAL(A:A)-1;NBVAL(1:1)))
En fait, si je comprend, c'est pas très bien de déterminer une plage avec Insertion/Nom/Définir pour un ListBox
Encore merci Bonne soirée
DAVID
Bonjour
Je bloque sur ce code en aplliquand au mieux ton fichier exemple.
Quand je supprime une fiche, cela fonctionne apparemment mais si je supprime la dernière fiche alors message "impossible de définir la propriété liste index" à la ligne : Me.LstListeVehicule.ListIndex = X - 1 mais dans la feuille cela a supprimé la dernière ligne et 2 lignes au dessus J'ai du mal à comprendre avec les -1, <> -1, +1, etc...
Merci de ton aide Cordialement
Static X As Long If Me.LstListeVehicule <> -1 Then X = Me.LstListeVehicule.ListIndex + 1 Rg(X, 1).Resize(, Rg.Columns.Count).Delete xlUp X = X - 1 With Sheets("BD") .Cells(X, 1).Delete .Cells(X, 2).Delete .Cells(X, 3).Delete .Cells(X, 4).Delete .Cells(X, 5).Delete .Cells(X, 6).Delete .Cells(X, 7).Delete .Cells(X, 8).Delete .Cells(X, 9).Delete End With End If Charger_ListBox If X > -1 Then Me.LstListeVehicule.ListIndex = X - 1 Else Me.LstListeVehicule.ListIndex = -1 End If Me.Label2 = X & " sur " & Rg.Rows.Count
UserForm_Initialize
Bonjour
Je bloque sur ce code en aplliquand au mieux ton fichier exemple.
Quand je supprime une fiche, cela fonctionne apparemment mais si je supprime
la dernière fiche alors message "impossible de définir la propriété liste
index" à la ligne : Me.LstListeVehicule.ListIndex = X - 1 mais dans la
feuille cela a supprimé la dernière ligne et 2 lignes au dessus
J'ai du mal à comprendre avec les -1, <> -1, +1, etc...
Merci de ton aide
Cordialement
Static X As Long
If Me.LstListeVehicule <> -1 Then
X = Me.LstListeVehicule.ListIndex + 1
Rg(X, 1).Resize(, Rg.Columns.Count).Delete xlUp
X = X - 1
With Sheets("BD")
.Cells(X, 1).Delete
.Cells(X, 2).Delete
.Cells(X, 3).Delete
.Cells(X, 4).Delete
.Cells(X, 5).Delete
.Cells(X, 6).Delete
.Cells(X, 7).Delete
.Cells(X, 8).Delete
.Cells(X, 9).Delete
End With
End If
Charger_ListBox
If X > -1 Then
Me.LstListeVehicule.ListIndex = X - 1
Else
Me.LstListeVehicule.ListIndex = -1
End If
Me.Label2 = X & " sur " & Rg.Rows.Count
Je bloque sur ce code en aplliquand au mieux ton fichier exemple.
Quand je supprime une fiche, cela fonctionne apparemment mais si je supprime la dernière fiche alors message "impossible de définir la propriété liste index" à la ligne : Me.LstListeVehicule.ListIndex = X - 1 mais dans la feuille cela a supprimé la dernière ligne et 2 lignes au dessus J'ai du mal à comprendre avec les -1, <> -1, +1, etc...
Merci de ton aide Cordialement
Static X As Long If Me.LstListeVehicule <> -1 Then X = Me.LstListeVehicule.ListIndex + 1 Rg(X, 1).Resize(, Rg.Columns.Count).Delete xlUp X = X - 1 With Sheets("BD") .Cells(X, 1).Delete .Cells(X, 2).Delete .Cells(X, 3).Delete .Cells(X, 4).Delete .Cells(X, 5).Delete .Cells(X, 6).Delete .Cells(X, 7).Delete .Cells(X, 8).Delete .Cells(X, 9).Delete End With End If Charger_ListBox If X > -1 Then Me.LstListeVehicule.ListIndex = X - 1 Else Me.LstListeVehicule.ListIndex = -1 End If Me.Label2 = X & " sur " & Rg.Rows.Count
UserForm_Initialize
michdenis
J'ai supprimé toutes les entrées du listbox à partir de la dernière vers la première et je n'ai pas généré ce que tu observes. (je ne dis pas que tout est parfait, cela se voulait qu'un petit exemple vite fait illustrant un principe ...
If me.listbox.listindex <> -1 then ce qui suit s'exécute seulement si un élément du listbox est sélectionné.
La première entrée d'un listbox à comme index 0 La première ligne d'une feuille de calcul est 1
En conséquence, listbox1.Listindex +1 , le +1 c'est pour retrouver la ligne équivalent dans un objet "Range", Cet objet dans mon exemple est Rg
quand Listbox.listindex =0 cela signifie que c'est la première ligne de la plage Rg d'où Rg(1). Si tu utilises une variable, il va falloir additionner 1 à la propriété Listindex pour retrouver la ligne de la plage Rg.
Voilà
"DAVID" a écrit dans le message de groupe de discussion :
Bonjour
Je bloque sur ce code en aplliquand au mieux ton fichier exemple.
Quand je supprime une fiche, cela fonctionne apparemment mais si je supprime la dernière fiche alors message "impossible de définir la propriété liste index" à la ligne : Me.LstListeVehicule.ListIndex = X - 1 mais dans la feuille cela a supprimé la dernière ligne et 2 lignes au dessus J'ai du mal à comprendre avec les -1, <> -1, +1, etc...
Merci de ton aide Cordialement
Static X As Long If Me.LstListeVehicule <> -1 Then X = Me.LstListeVehicule.ListIndex + 1 Rg(X, 1).Resize(, Rg.Columns.Count).Delete xlUp X = X - 1 With Sheets("BD") .Cells(X, 1).Delete .Cells(X, 2).Delete .Cells(X, 3).Delete .Cells(X, 4).Delete .Cells(X, 5).Delete .Cells(X, 6).Delete .Cells(X, 7).Delete .Cells(X, 8).Delete .Cells(X, 9).Delete End With End If Charger_ListBox If X > -1 Then Me.LstListeVehicule.ListIndex = X - 1 Else Me.LstListeVehicule.ListIndex = -1 End If Me.Label2 = X & " sur " & Rg.Rows.Count
UserForm_Initialize
J'ai supprimé toutes les entrées du listbox à partir
de la dernière vers la première et je n'ai pas
généré ce que tu observes. (je ne dis pas que tout est
parfait, cela se voulait qu'un petit exemple vite fait
illustrant un principe ...
If me.listbox.listindex <> -1 then
ce qui suit s'exécute seulement si un élément du listbox est sélectionné.
La première entrée d'un listbox à comme index 0
La première ligne d'une feuille de calcul est 1
En conséquence, listbox1.Listindex +1 , le +1 c'est pour retrouver
la ligne équivalent dans un objet "Range", Cet objet dans mon
exemple est Rg
quand Listbox.listindex =0 cela signifie que c'est la première ligne
de la plage Rg d'où Rg(1). Si tu utilises une variable, il va falloir
additionner 1 à la propriété Listindex pour retrouver la ligne de
la plage Rg.
Voilà
"DAVID" <direction-ternoise@wanadoo.fr> a écrit dans le message de groupe de discussion :
OFUBEYQmKHA.2160@TK2MSFTNGP02.phx.gbl...
Bonjour
Je bloque sur ce code en aplliquand au mieux ton fichier exemple.
Quand je supprime une fiche, cela fonctionne apparemment mais si je supprime
la dernière fiche alors message "impossible de définir la propriété liste
index" à la ligne : Me.LstListeVehicule.ListIndex = X - 1 mais dans la
feuille cela a supprimé la dernière ligne et 2 lignes au dessus
J'ai du mal à comprendre avec les -1, <> -1, +1, etc...
Merci de ton aide
Cordialement
Static X As Long
If Me.LstListeVehicule <> -1 Then
X = Me.LstListeVehicule.ListIndex + 1
Rg(X, 1).Resize(, Rg.Columns.Count).Delete xlUp
X = X - 1
With Sheets("BD")
.Cells(X, 1).Delete
.Cells(X, 2).Delete
.Cells(X, 3).Delete
.Cells(X, 4).Delete
.Cells(X, 5).Delete
.Cells(X, 6).Delete
.Cells(X, 7).Delete
.Cells(X, 8).Delete
.Cells(X, 9).Delete
End With
End If
Charger_ListBox
If X > -1 Then
Me.LstListeVehicule.ListIndex = X - 1
Else
Me.LstListeVehicule.ListIndex = -1
End If
Me.Label2 = X & " sur " & Rg.Rows.Count
J'ai supprimé toutes les entrées du listbox à partir de la dernière vers la première et je n'ai pas généré ce que tu observes. (je ne dis pas que tout est parfait, cela se voulait qu'un petit exemple vite fait illustrant un principe ...
If me.listbox.listindex <> -1 then ce qui suit s'exécute seulement si un élément du listbox est sélectionné.
La première entrée d'un listbox à comme index 0 La première ligne d'une feuille de calcul est 1
En conséquence, listbox1.Listindex +1 , le +1 c'est pour retrouver la ligne équivalent dans un objet "Range", Cet objet dans mon exemple est Rg
quand Listbox.listindex =0 cela signifie que c'est la première ligne de la plage Rg d'où Rg(1). Si tu utilises une variable, il va falloir additionner 1 à la propriété Listindex pour retrouver la ligne de la plage Rg.
Voilà
"DAVID" a écrit dans le message de groupe de discussion :
Bonjour
Je bloque sur ce code en aplliquand au mieux ton fichier exemple.
Quand je supprime une fiche, cela fonctionne apparemment mais si je supprime la dernière fiche alors message "impossible de définir la propriété liste index" à la ligne : Me.LstListeVehicule.ListIndex = X - 1 mais dans la feuille cela a supprimé la dernière ligne et 2 lignes au dessus J'ai du mal à comprendre avec les -1, <> -1, +1, etc...
Merci de ton aide Cordialement
Static X As Long If Me.LstListeVehicule <> -1 Then X = Me.LstListeVehicule.ListIndex + 1 Rg(X, 1).Resize(, Rg.Columns.Count).Delete xlUp X = X - 1 With Sheets("BD") .Cells(X, 1).Delete .Cells(X, 2).Delete .Cells(X, 3).Delete .Cells(X, 4).Delete .Cells(X, 5).Delete .Cells(X, 6).Delete .Cells(X, 7).Delete .Cells(X, 8).Delete .Cells(X, 9).Delete End With End If Charger_ListBox If X > -1 Then Me.LstListeVehicule.ListIndex = X - 1 Else Me.LstListeVehicule.ListIndex = -1 End If Me.Label2 = X & " sur " & Rg.Rows.Count
UserForm_Initialize
DAVID
Re
Merci pour les explications.
Je vais essayer de revoir tout la procédure avec F8.
Pour l'instant : Exemple, Sélection de l'entrée 10 Bouton supprimer Suppression de l'entrée 10 et 8 !!!
Et si je supprime la première ou dernière entrée, erreur
Re
Merci pour les explications.
Je vais essayer de revoir tout la procédure avec F8.
Pour l'instant : Exemple,
Sélection de l'entrée 10
Bouton supprimer
Suppression de l'entrée 10 et 8 !!!
Et si je supprime la première ou dernière entrée, erreur