Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Condition dans listbox

didier09

XLDnaute Occasionnel
Bonsoir à tous,
Je m'en remets une fois de plus à vous, moi je suis à fond....
je voudrais afficher des valeurs dans une listbox seulement si, pour chaque ligne, la valeur de la cellule D est > à la cellule C.
je joins mon début de code
Merci
Didier [file name=list_essai.zip size=15508]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/list_essai.zip[/file]
 

Pièces jointes

  • list_essai.zip
    15.1 KB · Affichages: 10

Jam

XLDnaute Accro
Salut Didier09,

Rajoute ça dans ton code
Code:
If Cel.Offset(0, 3).Value > Cel.Offset(0, 2) Then
      Donnees1.Add Cel.Text, Cel.Text
End If

Bon courage

PS./ C'est pas très zouli zouli comme code
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir didier09, Jam, le Forum,

Une autre suggestion :
Cordialement,
 

didier09

XLDnaute Occasionnel
Re, Merci à vous deux.
je rentre à l'instant d'une réunion et je découvre vos solutions.
je vais adopter la macro de Mdf , je la trouve zouli zouli....
je pense saisir l'essentiel, mais juste une préscision:
TabTemp = .Range(.Cells(2, 1).Cells(L, 4)).Value
c'est ici que tu défini ton tableau
.Cells(2, 1) : pour la cellule A2
Cells(L, 4) : pour la fin du tableau derniere ligne et D
For L = 1 To UBound(TabTemp, 1) : j'avoue ne pas etre sur de comprendre.
Trouvé sur l'aide Vba: La fonction UBound est utilisée avec la fonction LBound pour déterminer la taille d'un tableau.
En réalité avec cette fonction tu balaye toutes les lignes du tableau que tu defini?

Bonne soirée
Didier
 

myDearFriend!

XLDnaute Barbatruc
Re didier09,

Tu as tout juste !

Ubound(Tableau,dimension) te donne le plus grand indice du Tableau pour la dimension mentionnée.

Etant directement issu d'un objet Range (une plage de cellules), TabTemp() est un tableau variant de base 1 dont la première dimension correspond aux lignes et la deuxième aux colonnes. Autrement dit, Ubound(TabTemp,1) te donne le plus grand indice dans la première dimension du tableau TabTemp(), c'est à dire le nombre total de lignes de la plage mémorisée.

J'aurais donc pu utiliser quelque chose comme :
      For i = 1 To (L-1)
      ...
ce qui revenait donc à la même chose, mais je préfère économiser une variable supplémentaire (i) et réutiliser la variable L pour la boucle.

Cordialement,
 

didier09

XLDnaute Occasionnel
Rebonjour,
En poussant la réflexion un peu plus loin,si j'utilise ce type de tableau
quelle est la syntaxe à ajouter pour éviter d'afficher les doublons de la colonne.
J'ai trouvé une démo de @+Thierry du 05/2004,
http://www.excel-downloads.com/html/French/forum/messages/1_88133_88133.htm
j'ai essayé d'adapter, cela plante à tous les coups: Il avertissait que cela était l'inconvenient principal de la méthode .
Didier
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Didier09,

Pour moi, la méthode la plus pratique et rapide consiste à utiliser une collection pour ce genre de problème.

Il m'est difficile de te présenter une adaptation de ton fichier avec un exemple de code puisque tu ne remontes dans ta listbox que les index de la colonne A (qui sont, par définition, sans doublon!).

Si tu le souhaites, tu peux joindre dans ce fil un fichier exemple simple que je pourrais t'adapter en conséquence et t'expliquer...

Dans l'attente, tu peux consulter ce lien Lien supprimé dans lequel j'avais essayé d'expliquer un peu le principe.

Cordialement,
 

didier09

XLDnaute Occasionnel
Bonjour et merci de me consacrer de ton temps.
Je te joins un fichier. Je vais consulter aussi le lien que tu m'a donné.
Didier [file name=listbox_doublons.zip size=14471]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/listbox_doublons.zip[/file]
 

Pièces jointes

  • listbox_doublons.zip
    14.1 KB · Affichages: 16

didier09

XLDnaute Occasionnel
Bonsoir,
J'ai essayé de réaliser de mon coté, grace au lien que tu m'a donné,
l'affichage dans la listbox des entrées sans doublon. je n'y suis pas arrivé malgré plusieurs tentatives. Je joins mon code
Didier [file name=listbox_doublons_20051116203050.zip size=14947]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/listbox_doublons_20051116203050.zip[/file]
 

Pièces jointes

  • listbox_doublons_20051116203050.zip
    14.6 KB · Affichages: 16

myDearFriend!

XLDnaute Barbatruc
Bonsoir Didier09, le Forum,

Tu trouveras ci-joint ton exemple modifié en conséquence.

Visiblement, tu avais bien appliqué le principe du filtrage par l'objet collection, c'était simplement le chargement de la ListBox1 à partir de cette collection qui était à revoir...

Dans ce fichier, tu trouveras 2 façons de faire...

La première (la plus simple à comprendre je pense) :
La seconde, qui a ma préférence puisqu'elle permet d'éviter une double boucle (une pour filtrer dans l'objet collection et une pour charger la ListBox). Comme à mon habitude, j'utilise également un tableau variant temporaire   :
Testée sur un peu plus de 20000 lignes, cette dernière procédure divise par 2 le temps de traitement par rapport à la première...

Cordialement, [file name=PourDidier09.zip size=17306]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourDidier09.zip[/file]
 

Pièces jointes

  • PourDidier09.zip
    16.9 KB · Affichages: 42

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…