Votre question
Résolu

Bonjour, comment afficher une ou plusieurs lignes de données Xcel grâce à VBA ?

Tags :
  • Programmation
Dernière réponse : dans Programmation
11 Avril 2016 11:38:56

Bonjour,

Je débute sur VBA et je souhaiterais réaliser une requête simple.

J'ai des lignes de données simples sur feuille qui s'appelle "BDD".

J'ai créer une bouton dans la feuille 2.



Je souhaiterais AFFICHER une ou plusieurs lignes de la feuille BDD en fonction d'une valeur (nombre entier) et d'une commune (2 choix dans un menu déroulant) dans la feuille 2.

La valeur sera recherché dans la 1ere colonne de la "BDD" et la commune dans la 2eme colonne.

Quand je clique sur le bouton, je voudrais que ça me fasse apparaître la ou les ligne(s) qui correspond(ent) à la valeur de cette colonne.

Est-il possible de les faire apparaître sous forme de ligne Excel ( dans la feuille 2 en dessous du bouton ) ou est-on obligé de faire apparaître dans une box ?

Merci à ceux qui pourront m'aider ;) 

Autres pages sur : bonjour afficher plusieurs lignes donnees xcel vba

a c 85 L Programmation
13 Avril 2016 08:18:25

Salut, je manque de temps en ce moment, désolé, avant 2 semaines je ne pourrai pas t'aider ...

Ce que tu cherches à faire est assez facilement réalisable en VBA. Essaie de pondre une base et je verrai si je trouve un moment pour améliorer ton code.
m
0
l
25 Avril 2016 12:21:07

Salut, j'ai bien essayé quelque chose mais mon niveau en anglais me limite dans le choix des "fonctions" ! :/ 
m
0
l
a c 85 L Programmation
25 Avril 2016 12:37:14

Publie, on verra ce que ça donne ...
m
0
l
25 Avril 2016 17:37:40

Bonjour,

Les deux sont réalisables. On peut les faire apparaître ou dans une Box ou dans la feuille de calcul. Mais la deuxième est préférable.
Je m'assure que je t'ai bien compris:
Tu as une liste de données contenues dans une colonne. Tu veux vérifier lesquelles correspond à une donnée qui est dans une autre cellule et tu veux qu'il te l'affiche en dessous du bouton. C'est cela? Tu veux qu'il t'affiche quoi les cellules qui correspondent?
m
0
l
28 Avril 2016 11:39:04

Bonjour,

Mon tableau possède 18 colonnes.

Dans ma première colonne, il y a des chiffres d'identification.

Dans ma 2ème colonne des noms de commune.

Les autres colonnes contiennes des caractéristiques.

En rentrant dans une case le numéro de la 1ère colonne, je voudrais que ça m'affiche en dessous la ou les lignes correspondantes au numéro demandés.

Et si c'est possible dans le même temps, avoir un 2ème tri par commune (choix avec un menu déroulant en même temps que la saisie du numéro ?).

N'hésitez pas si je ne suis pas assez clair ;) 

Merci.
m
0
l

Meilleure solution

1 Mai 2016 19:38:24

Oui, c'est possible.

Je commence par la deuxième, c'est la plus facile, je pense. Puisque tes données sont sur une feuille de calcul Excel, mets les données en forme dans un tableau. Les tableaux ont la fonction tri croissant et décroissant. C'est plus facile! Pourquoi se compliquer la vie quand elle peut être plus simple? ;) 

Pour le premier, tu pourras facilement créer un bouton grâce à l'onglet Développeur. Dans la rubrique Contrôles, tu auras un bouton "Insérer". Tu peux choisir un contrôle de formulaire pour qqc d'aussi simple.
Ensuite, crée un nouveau module dans l'éditeur de projet VBA. Pour recueillir le numéro, utilises une InputBox. Ensuite, l'InputBox renvoie un chiffre que le programme cherchera dans ta colonne. Quand il le trouve, il renverra toutes les caractéristiques correspondant au choix que tu as fait.

Cela donne à peu près cela.

Sub nom_de_ton_programme()

Dim valeurCherchee as Integer
valeurCherchee = Application.InputBox("Numéro Id: ", "Entrer le numéro d'identification de la commune", "Mois", , , , , 1)

For i = 1 to 18 'J'ai écrit 18 mais pour plus de sureté, il faut prendre un chiffre plus grand au risque d'oublier certaines lignes
If valeurCherchee = cells(1,i) then
MsgBox("Nom de ma commune: " & cells(2,i)) 'Tu peux faire ajouter les autres caractéristiques de la commune
Exit For
End If
Next

End Sub

Cela donne à peu près cela. J'ai écris le code, mais je ne l'ai pas testé pour voir s'il fonctionne. Tu vérifieras et tu me diras si cela fait à peu près ce que tu désires. J'ai choisi de l'afficher dans une Box, mais on peut aussi très bien l'afficher dans une feuille. C'est à toi de voir. Pour cela, tu choisiras la cellule où tu veux afficher le résultat et tu ajouteras la ligne suibvante à ton code Range("D5").value = Cells(2,i) à la place de MsgBox... Par ailleurs, c'est assez difficile de faire un code précis vu qu'on ne sait comment ta feuille se présente. Ce sera à toi d'adapter.
Ca t'aide?
partage
2 Mai 2016 11:42:50

Merci, ça avance déjà bien.

Voici le code du coup :

  1. Sub BDD()
  2. Dim valeurCherchee As Integer
  3. valeurCherchee = Application.InputBox("Numéro parcelle:")
  4.  
  5. For i = 1 To 500
  6. If valeurCherchee = Cells(1, i) Then
  7. Range("A10").Value = Cells(2, i)
  8. Exit For
  9. End If
  10. Next
  11.  
  12. End Sub



Ma Base de Données est sur la feuille 1. Quand je clique sur mon bouton "Recherche" sur la feuille 2, ça m'affiche bien la box et je rentre un numéro que je recherche.

Mais après ça ne me fait rien. Je pense qu'il doit y avoir un souci de définition de feuille non ?

Je voudrais que ça me m'affiche les résultats en "A10" de la feuille 2.

En tout cas merci, je comprends un peu mieux les fonctions. Il manque plus que l'affichage ;) 

m
0
l
a c 85 L Programmation
2 Mai 2016 12:23:07

Salut,
svp, utiliser la balise code:

[code="vb"]
... ton code ici
[/code]

quelques remarques:
valeurCherchee = Cells(1, i).Value .Il faut toujours précisé la proprité (même si VBA devine souvent assez bien)
Ensuite tu utilises 2 feuilles, mais tu ne précise jamais dans ton code sur quelle feuille tu travailles. par défaut VBA utiliseras la feuille active.
Finalement ton code ne cherchera qu'une seule ligne. dès qu'il aura trouvé qqch, il s'arrêtera.

N.B. ce que tu cherches à faire ressemble beaucoup à la fonction "RechercheV" de Excel
m
0
l
2 Mai 2016 14:02:01

Merci.

Oui mais j'ai 19 colonnes à faire apparaître sur ma ligne recherchée alors qu'il me semble qu'avec la recherche V, je ne peux afficher qu'un seul élément.
m
0
l
a c 85 L Programmation
2 Mai 2016 14:10:21

Effectivement ...
m
0
l
4 Mai 2016 22:12:06

Rien ne s'affiche? Etrange! De deux choses l'une:
- ou il n'a trouvé aucune correpondance et donc il n'écrit rien en A10
- ou il a trouvé qqc et c'est toi qui n'a pas vu... Le code permet d'écrire en A10. Or tu as des données en A10! Peut-être n'as-tu pas alors remarqué le résultat confondu avec tes autres données.
Le MsgBox que j'avais proposé au départ permet de s'assurer qu'il a bien trouvé une correspondance avant d'écrire le code final.
Puisque ce que toi tu veux, c'est l'afficher sur la feuille 2 en A10, avant la ligne avec "Range("A10")..." ajoute le code suivant:

  1. ThisWorkbook.Worsheets("Feuil2").Activate


Cette ligne de code active la deuxième feuille (si elle s'appelle bien sûr "Feuil2"). Comme ça, il écrira le résultat en A10 sur la feuille 2.
Tu pourras ainsi t'assurer que le résultat est bien celui que tu veux...
Alors, qu'est-ça donne?
m
0
l
5 Mai 2016 17:19:33

Bonjour,
En complément d’information, je te conseille vivement de suivre des tutoriels sur la toile pour que tu puisses maitriser à merveille Excel et toutes ses fonctionnalités. Bonne continuation.
m
0
l