Comment faire une mini macro!!! je débute

Messages postés
17
Date d'inscription
jeudi 15 septembre 2005
Statut
Membre
Dernière intervention
5 novembre 2005
- - Dernière réponse : cs_Willi
Messages postés
2377
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
- 20 sept. 2005 à 01:32
Dites j'aurai une question svp
Comment faire lorsque j'ai un tableau de 2 colonnes dans excel:
Dans la colonne A j'ai des références qui changent à chaque fois.
Dans la B j'ai des solutions au nombre de 5 qui se répètent.
Je voudrais qu'en entrant dans une fenêtre un des 5 noms présents dans la colonne B, ma macro sorte une fenêtre avec toutes les références correspondantes au nom entré.

Pour mieux expliquer le contenu des colonnes prenons un exemple simple. Différentes equipes de foot. Dans la colonne A tous les noms des joueurs de toutes les équipes donc tous différents et dans la B le nom de l'quipe dans laquelle ils jouent.
Je voudrais qu'en entrant dans une fenetre le nom de l'équipe, une autre fenetre s'ouvre et me donne le nom de tous les joueurs qui jouent dans cette équipe avec le nombre de joueurs.
Merci beaucoup
Afficher la suite 

5 réponses

Messages postés
25
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
22 septembre 2005
0
Merci
Ta question n est pas clair du tout
D ou proviennent les resultats dans ta colonne A et ta colonneB?
Qu est ce qui les relie? une base de donnees?

Si je reprends ton exemple et considere que tu as une base de donnees
avec une table JOUEUR (id_joueur et nom)
une table EQUIPE (id_equipe et nom)
une table RELATION (id_equipe et id_joueur)
la reponse serait tres simple
tu as une forme ou une text box ou tu saisis un nom et apres tu as juste une requete a faire pour afficher dans une liste box le resultat de ta requete

voila
chris
Messages postés
2377
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
16
0
Merci
Bonsoir,
Je viens de faire le code que tu recherches
Dans le code ci-dessous j'ai inséré dans ma feuille excel une liste appelé "ListBox1" et un textbox appelé "TextBox1".
J'ai fait ce code avec ton exemple dess joueurs de foot et leurs équipes (plus simple pou toi je pense à comprendre et utiliser le code ci-dessous).
Dans cet exemple TextBox1 contient le nom de l'equipe dont tu désires afficher les joueurs de cette équipe.
ListBox1 elle sert à lister les noms des joueurs de cette équipe.

Dim sEquipe As String 'Contient le nom de l'équipe demandée
Dim i As Integer: i = 1 'Compteur qui va servir à parcourir les lignes de ton tableau excel
Dim j As Integer: j = 0 'Compteur qui va servir à incrémenter le tableau qui va contenir la liste des joueurs trouvés
Dim sTabJoueur() As String 'Tableau qui va contenir la liste des joueurs trouvés

'Récupère le nom de l'équipe dont tu veux connaitre le nom des joueurs
sEquipe = TextBox1.Text

'Fait une boucle jusqu'à tant qu'une cellule vide soit trouvée
While (Not Cells(i, "A") = "")
'Compare le nom de l'équipe choisie avec le nom de l'équipe de la ligne i
If Cells(i, "B") = sEquipe Then
ReDim Preserve sTabJoueur(j) 'redimensionne le tableau des joueurs
sTabJoueur(j) = Cells(i, "A") 'écrit le nom du joueur dans le tableau
j = j + 1
End If
i = i + 1
Wend

'Vide la liste qui va contenir le nom des joueurs
ListBox1.Clear

'affichage du resultat
'parcourt de la 1ière case à la dernière case du tableau des joueurs
For i = 0 To UBound(sTabJoueur)
ListBox1.AddItem sTabJoueur(i) 'et ajoute le nom de ceux ci dans la liste
Next

Ci tu veux mon fichier excel avec le code pour mieux voir fais moi signe :)
Bon courage
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
3
0
Merci
Salut,
Voilà un bout de code pour commencer, j'ai mis qq explications puisque tu es débutant
1°) Mettre un bouton sur ta feuille
2°) Dans le code de ce bouton tu colles ceci
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

3°) Tu crée une UserForm
4°) Sur ta UserForm tu Mets un Label, Un CommandButon, Une zone de texte, et une zone de liste
5°) Tu colles ce code dans ton code de la UserForm

Private Sub CommandButton1_Click()
'*** Déclaration des variables
Dim Ws As Range: Dim rNum As Long: Dim lLastrow As Long
'*** On vide la liste box
ListBox1.Clear

rNum = 0
'*** La recherche se fait sur la feuille "Joueurs" A ADAPTER SELON TA FEUILLE
With Worksheets("Joueurs")
'*** On recherche la dernière ligne vide de la colonne "B"
lLastrow = .Cells(65536, 2).End(xlUp).Row
'*** On effectue une boucle sur tous les éléments de la colonne "B"


For Each Ws In [B:B]
'*** Si c'est la dernière ligne on sort de la boucle
If Ws.Row = lLastrow Then Exit For

If Ws.Value = TextBox1.Value Then
'*** Si c'est la valeur recherchée on ajoute à la liste box la valeur de gauche
ListBox1.AddItem Ws.Offset(0, -1).Value
'*** Et on compte une entrée de plus
rNum = rNum + 1
End If
Next

End With
'*** On affiche une réponse selon le nombre de valeurs trouvées
Select Case rNum
Case Is = 0
Label1.Caption = " il n'y a pas de joueurs pour cette équipe !"
Case Is >= 1
Label1.Caption = " Le nombre de joueurs pour cette équipe est de : " & rNum
Case Else
End Select

End Sub


Private Sub UserForm_Activate()Label1.Caption Label1.Caption "Entrez un nom d'équipe et cliquez sur recherche"
CommandButton1.Caption = "Recherche ..."
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
Messages postés
25
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
22 septembre 2005
0
Merci
ok je viens de voir le message de Willi et j ai compris la question posee
En fait j ai zappe la partie la plus importante qui dit que l on a le nom du joueur en A et de l equipe en B
Enfin bref
Ce code a l air parfait en tous cas

Bon courage
Messages postés
2377
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
16
0
Merci
Si le code proposé te conviens et fonctionne valide le pour les autres :)