Récupérer des données d'une feuille Excel dans un formulaire

c176613

XLDnaute Nouveau
Bonjour tout le monde,

J'aimerais récupérer dans un Userform les lignes de résultats d'une feuille Excel.

Le tableau des résultats se trouve sur ma feuille en A2:H150. J'ai bien réussi à incorporer à mon formulaire ce tableau au moyen d'une fonction Listbox mais j'aimerais que la plage de résultats soit dynamique. En effet, il peut y avoir une ou plusieurs lignes de résultats dans mon tableau, résultats découlant d'une recherche faite par mon formulaire. Ma Listbox actuelle présente les 150 lignes, même si celles-ci sont vides et un ascenseur disgracieux apparaît pour rien.

Merci pour toute idée qui pourrait me faire avancer.

A bientôt
Pascal
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Récupérer des données d'une feuille Excel dans un formulaire

bonjour,

tout dépend de la façon dont est initialisée la listbox.

si c'est par des additem, faire un test sur une cellule représentative de la ligne, si non vide on "charge" la listbox (si vide, on ne fait rien)

si par listbox.list= tableau, modifier le tableau pour qu'il ne comporte pas de ligne vide ( en modifiant la recherche du formulaire ?) ou bien passer par des additem

A+
 

c176613

XLDnaute Nouveau
Re : Récupérer des données d'une feuille Excel dans un formulaire

Merci pour la réponse Paf,

En fait, j'emploie RowSource pour définir le tableau que je veux voir affiché dans mon formulaire. Le problème c'est que je dois afficher tout le tableau et non pas seulement les cellules qui sont remplies. Donc il me faut trouver une autre solution qui mette à jour dynamiquement l'affichage de mon tableau dans le formulaire
 

Paf

XLDnaute Barbatruc
Re : Récupérer des données d'une feuille Excel dans un formulaire

Re

Pas sûr d'avoir tout compris.
post#1
En effet, il peut y avoir une ou plusieurs lignes de résultats dans mon tableau, résultats découlant d'une recherche faite par mon formulaire
post # 3
En fait, j'emploie RowSource pour définir le tableau


si les lignes "vides" sont en fin de tableau ,le code suivant permet de n'initialiser la listbox que jusqu'à la dernière ligne non vide du tableau

Code:
DerLig = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
ListBox1.RowSource = "Feuil1!A1:D" & DerLig
ou
Code:
ListBox1.RowSource = "Feuil1!A1:D" & Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
une autre solution, sans utiliser la propriété RowSource:
Code:
DerLig = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
ListBox1.List = Worksheets("Feuil1").range("A1:D" & DerLig).Value

En espérant avoir répondu au souci; sinon joindre un classeur et des explications plus précises

A+
 

c176613

XLDnaute Nouveau
Re : Récupérer des données d'une feuille Excel dans un formulaire

Re

J'ai mis en annexe mon classeur.

En fait, tel qu'il est ça fonctionne très bien. La seule chose que je veux c'est que les 150 premières lignes du tableau que j'emploie pour afficher les résultats ne soient pas toutes prises en compte si seulement 1 ligne est remplie. Je veux que ne soient affichées que les lignes ayant un résultat.
 

Pièces jointes

  • Copie de Liste MFP SRo.xlsm
    91.3 KB · Affichages: 44
Dernière édition:

c176613

XLDnaute Nouveau
Re : Récupérer des données d'une feuille Excel dans un formulaire

Re

J'ai mis en annexe mon classeur.

En fait, tel qu'il est ça fonctionne très bien. La seule chose que je veux c'est que les 150 premières lignes du tableau que j'emploie pour afficher les résultats ne soient pas toutes prises en compte si seulement 1 ligne est remplie. Je veux que ne soient affichées que les lignes ayant un résultat.

J'ai modifié le fichier, merci d'employer celui-ci
 

Paf

XLDnaute Barbatruc
Re : Récupérer des données d'une feuille Excel dans un formulaire

Re bonsoir

Le mystère s'épaissit !
En fait, tel qu'il est ça fonctionne très bien. La seule chose que je veux c'est que les 150 premières lignes du tableau que j'emploie pour afficher les résultats ne soient pas toutes prises en compte si seulement 1 ligne est remplie.

les 150 premières lignes de la feuille Feuil1 sont toutes renseignées de #VALEUR!; c'est une façon d'anonymiser le classeur ?

S'il s'agit de ne faire afficher que les lignes renseignées dans ces 150 premières lignes, je ne vois pas d'autres directions que celles données dans les posts précédents.

Avec vos explications, je ne comprend pas exactement le soucis. Pour la suite, se sera sans moi .

Bonne continuation
 

c176613

XLDnaute Nouveau
Re : Récupérer des données d'une feuille Excel dans un formulaire

OK, ça fonctionne avec la formule suivante:

DerLig = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
ListBox1.List = Worksheets("Feuil1").range("A1:H" & DerLig).Value

Cependant, vu que les lignes sont remplies avec des formules, la formule ci-dessus prend en compte toutes les lignes puisqu'elles ne sont pas vides.

Comment faire pour dire à la formule de ne pas prendre en compte les cellules où une formule est inscrite? En fait, il faudrait lister uniquement les lignes où un résultat est visible.

D'avance merci pour une réponse
Pascal
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 498
Messages
2 088 996
Membres
104 001
dernier inscrit
dessinbecm