Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

il me manque un code VBA pour une requete

12 réponses
Avatar
hali
Bonjour,

J'ai réussi au niveau d'un tableau qui comprend
une colonne client et d'autre colonnes
a faire une requete.
c'est a dire dans la colonne clients je peux avoir plusieurs fois le meme nom
donc j'ai fait un bouton de commande qui me restitue sur une autre feuille
suivant le nom choisi les valeurs lui correspondant

en appuyant sur ce bouton de commande, je choisi un nom ex dupont
mais sur l'onglet qui s'ouvre j'ai seulement une seul ligne avec ce nom
alors que sur le tableau initial j'ai plusieurs dupond

comment affiner mon code
pour selectionner tout les dupond par exemple

merci

10 réponses

1 2
Avatar
twinley
Bonjour,

Heu c'est Dupont ou Dupond ?
Tintin n'a rien a voir...mais là c'est deux noms différents.
--
à+twinley
"hali" a écrit dans le message de
news:
Bonjour,

J'ai réussi au niveau d'un tableau qui comprend
une colonne client et d'autre colonnes
a faire une requete.
c'est a dire dans la colonne clients je peux avoir plusieurs fois le meme
nom

donc j'ai fait un bouton de commande qui me restitue sur une autre
feuille

suivant le nom choisi les valeurs lui correspondant

en appuyant sur ce bouton de commande, je choisi un nom ex dupont
mais sur l'onglet qui s'ouvre j'ai seulement une seul ligne avec ce nom
alors que sur le tableau initial j'ai plusieurs dupond

comment affiner mon code
pour selectionner tout les dupond par exemple

merci



Avatar
JpPradier
C'est facile pour les reconnaitre, c'est celui qui a la moustache :-))

j-p
Avatar
hali
marrant!!!

non c'est dupont y'en a au moins 5
mais dans l'autre tableau créer je voit que un d'afficher


Bonjour,

Heu c'est Dupont ou Dupond ?
Tintin n'a rien a voir...mais là c'est deux noms différents.
--
à+twinley
"hali" a écrit dans le message de
news:
Bonjour,

J'ai réussi au niveau d'un tableau qui comprend
une colonne client et d'autre colonnes
a faire une requete.
c'est a dire dans la colonne clients je peux avoir plusieurs fois le meme
nom

donc j'ai fait un bouton de commande qui me restitue sur une autre
feuille

suivant le nom choisi les valeurs lui correspondant

en appuyant sur ce bouton de commande, je choisi un nom ex dupont
mais sur l'onglet qui s'ouvre j'ai seulement une seul ligne avec ce nom
alors que sur le tableau initial j'ai plusieurs dupond

comment affiner mon code
pour selectionner tout les dupond par exemple

merci








Avatar
twinley
excuse moi de couper les poils de moustache en quatre mais dans ton post tu
as écris un coup Dupont et un autre coup Dupond.
Ce qui pourrait bien être une cause d'erreur si dans ta liste tu as les
deux. Tu devrais vérifier car c'est deux noms différents.

--
à+twinley
"hali" a écrit dans le message de
news:
marrant!!!

non c'est dupont y'en a au moins 5
mais dans l'autre tableau créer je voit que un d'afficher


Bonjour,

Heu c'est Dupont ou Dupond ?
Tintin n'a rien a voir...mais là c'est deux noms différents.
--
à+twinley
"hali" a écrit dans le message de
news:
Bonjour,

J'ai réussi au niveau d'un tableau qui comprend
une colonne client et d'autre colonnes
a faire une requete.
c'est a dire dans la colonne clients je peux avoir plusieurs fois le
meme



nom
donc j'ai fait un bouton de commande qui me restitue sur une autre
feuille

suivant le nom choisi les valeurs lui correspondant

en appuyant sur ce bouton de commande, je choisi un nom ex dupont
mais sur l'onglet qui s'ouvre j'ai seulement une seul ligne avec ce
nom



alors que sur le tableau initial j'ai plusieurs dupond

comment affiner mon code
pour selectionner tout les dupond par exemple

merci










Avatar
hali
c'est moi qui ai fait une faute d'orthographe dans le poste

mais j'ai bien ds le tableau "dupont" 5 fois; il n'apparait qu'une fois
apres l'execution



excuse moi de couper les poils de moustache en quatre mais dans ton post tu
as écris un coup Dupont et un autre coup Dupond.
Ce qui pourrait bien être une cause d'erreur si dans ta liste tu as les
deux. Tu devrais vérifier car c'est deux noms différents.

--
à+twinley
"hali" a écrit dans le message de
news:
marrant!!!

non c'est dupont y'en a au moins 5
mais dans l'autre tableau créer je voit que un d'afficher


Bonjour,

Heu c'est Dupont ou Dupond ?
Tintin n'a rien a voir...mais là c'est deux noms différents.
--
à+twinley
"hali" a écrit dans le message de
news:
Bonjour,

J'ai réussi au niveau d'un tableau qui comprend
une colonne client et d'autre colonnes
a faire une requete.
c'est a dire dans la colonne clients je peux avoir plusieurs fois le
meme



nom
donc j'ai fait un bouton de commande qui me restitue sur une autre
feuille

suivant le nom choisi les valeurs lui correspondant

en appuyant sur ce bouton de commande, je choisi un nom ex dupont
mais sur l'onglet qui s'ouvre j'ai seulement une seul ligne avec ce
nom



alors que sur le tableau initial j'ai plusieurs dupond

comment affiner mon code
pour selectionner tout les dupond par exemple

merci















Avatar
JpPradier
Bonjour hali

tu devrais donner un peu de détails sur ta requete : Formule, VBA, autre ?
Je dirais meme plus : un exemple de ce que tu aimerais obtenir.
;-)

j-p
Avatar
hali
ca c'est mon programme quand j'appuie
sur le bouton de commande
je t'ai mit les commentaire pour mieux comprendre
sur l'autre onglet j'ai qu'un dupont
alors que sur le premier j'en ai plusieurs
mon probleme est la

Sub tape_et_lit()
'les actions qui débuteront par un . sans autre indication devant seront
'considérées comme ayant la feuille "1c" pour référence
With Sheets("1c")

'la variable nom contient ce qui est entré dans l'inputbox.
nom = InputBox("Tapez le nom recherché :", "Recherche")

'si rien n'est entrée,nom est vide (pas un espace, vide!)
'à ce moment, msgbox et quitter la macro
If nom = "" Then MsgBox "Vous n'avez rien tapé": Exit Sub

' . au début -> associé à feuille "1c"
' .[A:A] -> colonne A
'.find ... -> recherche la varaible nom dans la colonne A de la feuille
' et l'affecte à la variable c
' c représente toute la cellule trouvée et pas seulement son adresse
Set c = .[A:A].Find(nom)

'si rien n'est trouvé, c n'existe pas
'si c est rien alors ...
If (c Is Nothing) Then
' ... boite de message et quitter
MsgBox nom & " n'a pas été trouvé": Exit Sub
' ... sinon
Else
'copier les valeurs
'la cellule A2 de la feuille 3c2 reçoit *la valeur* de c
Sheets("3c2").Range("A2") = c.Value

'c.offset(lig,col).value est la valeur (value) de la cellule
'située à lig vers le bas et col colonnes vers la droite de
'la cellule c
'si lig est négatif -> lignes vers le haut
'si col est négatif -> colonnes vers la gauche

'si nom a été trouvé en cellule A47 par exemple, la cellule B2 de
'la feuille 3c2 reçoit *la valeur* de A48 (A47 + 0 lignes et 1 colonne)
Sheets("3c2").Range("B2") = c.Offset(0, 1).Value
'même principe
Sheets("3c2").Range("C2") = c.Offset(0, 5).Value
Sheets("3c2").Range("D2") = c.Offset(0, 6).Value
Sheets("3c2").Range("E2") = c.Offset(0, 7).Value

'pour que le résultat soit directement accessible, la feuille
'"3c2" est sélectionnée pour montrer ces valeurs.
'Il se trouve que j'ai fait un essai où cette macro était appelée
'lors de l'activation de la feuille (clic sur l'onglet)
'le souci est qu'alors la macro s'appelle elle-même et boucle

'la ligne suivante est utilisée pour désactiver tous les évènements qui
'se produisent dans Excel
Application.EnableEvents = False
'le changement de feuille ne déclenchant aucun évènement, la macro n'est
'pas appelée
Sheets("3c2").Activate
'il ne faut surtout pas oublier de réactiver les évènements sinon Excel
'risque de tousser très fort.
Application.EnableEvents = True

'le si(...) se termine ici
End If
'tout comme le with du début s'arrête là
End With
'fin de la macro
End Sub

"JpPradier" wrote:

Bonjour hali

tu devrais donner un peu de détails sur ta requete : Formule, VBA, autre ?
Je dirais meme plus : un exemple de ce que tu aimerais obtenir.
;-)

j-p




Avatar
JpPradier
A vue de nez, ici :
'copier les valeurs
'la cellule A2 de la feuille 3c2 reçoit *la valeur* de c
Sheets("3c2").Range("A2") = c.Value

Tu recopies la première occurrence de Dupon(dt) ;-). Vois du coté de FindNext pour les suivant.

j-p
Avatar
hali
au niveau de mon code je sais pas ou placé le
Set c = .FindNext(c)
merci


A vue de nez, ici :
'copier les valeurs
'la cellule A2 de la feuille 3c2 reçoit *la valeur* de c
Sheets("3c2").Range("A2") = c.Value

Tu recopies la première occurrence de Dupon(dt) ;-). Vois du coté de FindNext pour les suivant.

j-p




Avatar
JpPradier
Voici ton code adapté pour le findnext.

j-p


Sub tape_et_lit()

With Sheets("1c").Range("a:a")
nom = "dupont" ' InputBox("Tapez le nom recherché :", "Recherche")
If nom = "" Then MsgBox "Vous n'avez rien tapé": Exit Sub
Set c = .Find(nom, LookIn:=xlValues)
If (c Is Nothing) Then
MsgBox nom & " n'a pas été trouvé": Exit Sub
Else
cpt = 0
firstAddress = c.Address
Do
Sheets("3c2").Range("A2").Offset(cpt) = c.Offset(0, 0).Value
Sheets("3c2").Range("B2").Offset(cpt) = c.Offset(0, 1).Value
Sheets("3c2").Range("C2").Offset(cpt) = c.Offset(0, 5).Value
Sheets("3c2").Range("D2").Offset(cpt) = c.Offset(0, 6).Value
Sheets("3c2").Range("E2").Offset(cpt) = c.Offset(0, 7).Value
cpt = cpt + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
Application.EnableEvents = False
Sheets("3c2").Activate
Application.EnableEvents = True

End If
End With

End Sub
1 2