Comparer Un couple de valeur via deux feuilles différentes [Résolu/Fermé]

Signaler
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013
-
Messages postés
9989
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 juillet 2021
-
Salut à tous,

Débutant sur VBA, je sollicite votre aide.

Dans ma première Feuille l'utilisateur entre deux valeur d'un crayon (hauteur H, et diamètre D), ensuite j'aimerai que mo programme compare ces valeurs à une base de donnée existante, et qu'un message m'affiche "pas trouvé" ou bien "trouvé, ligne n°, colonne n°".

Voilà mon travail, mais je n'arrive pas à lui dire de m'indiquer si le duo existe ou non, il me renvoie toujours à une seul colonne, enfin bref votre aide me sera précieuse:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim D As Integer
Dim H As Integer
Dim celluletrouvee As Range
Dim ligne As Integer
Dim col As Integer

D = [F17]
H = [J17]
Set celluletrouvee = Worksheets("Feuil4").Range("D5:D62").Find(D, LookIn:=xlValues)
Set celluletrouvee = Worksheets("Feuil4").Range("E5:E62").Find(H, LookIn:=xlValues)

If celluletrouvee Is Nothing Then
MsgBox ("pas trouvé")
Else
ligne = celluletrouvee.Row
col = celluletrouvee.Column
MsgBox ("Le bouchon existe dans notre base de donnée : ligne = " & ligne & " , colonne = " & col)
End If

End Sub



Merci

9 réponses

Messages postés
13063
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
27 juillet 2021
2 220
Bonjour

ta variable celluletrouvee s'applique à 2 recherches successives donc seules les références de la 2nde sont prises en compte

il faut les distingue en appelant l'une celluletrouvee1 et l'autre celluletrouvee2 par ex

mais ce que je ne comprends pas c'est que si dans ta base de donnés tu as en colonne D les diametres et en colonne E les hauteurs ton code va trouver si un diametre correspond ou si une hauteur correspond mais pas si le couple existe

Si ce que tu veux c''est savoir si par ex le diametre cherché existe en D8 ET que la hauteur cherchée existe en E8 c'est autrement qu'il faut proceder, par une boucle du style :

message="Pas trouvé"
For n =2 to 62
IF sheets("Feuille4").range("D"& n).value = D AND sheets("Feuille4").range("E"&n).value= H then message="Existe ligne "& n : exit For
Next n

Msgbox(message)

Cdlmnt
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

Merci pour votre réponse je vais m'en inspirer ! :)
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim D As Integer
Dim H As Integer


D = [F17]
H = [J17]

For n = 2 To 62
If Sheets("Feuille4").Range("D" & n).Value = D And Sheets("Feuille4").Range("E" & n).Value = H Then MsgBox = "Existe ligne " & n: Exit For

End Sub

Voilà ce que j'ai écrit et sa ne marche pas ! dsl je suis vraiment débutant en programmation!
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

merci :)
mais maintenant jai un message qui m'indique cette erreur "For sans Next" ??
Messages postés
13063
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
27 juillet 2021
2 220
Tu as bien mis la ligne next n avant end sub ?
Et supprimes aussi le exit for
tu dois avoir cela :

For n = 2 To 62
If Sheets("Feuille4").Range("D" & n).Value = D And Sheets("Feuille4").Range("E" & n).Value = H Then MsgBox =("Existe ligne " & n)
Next n
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

S
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

Salut,
Reprise de la semaine :).
Donc j'ai retapé le code et un message d'erreur s'affiche en me surlignant MsgBox.
Le message: un appel de la fonction dans la partie gauche de l'affectation doit renvoyer Variant ou Objet
Messages postés
13063
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
27 juillet 2021
2 220
Bonjour

Je ne peux pas malheureusement pas essayer le code, l'ordinateur sur lequel je suis en ce moment n'étant équipé qu'en Libre Office qui n'admet pas la même procédure de programmation
Essaie de déclarer la variable n en debut de procedure
Public n as variant

mais je pense qu'il y a autre chose
Est ce que quelqu'un qui peut essayer le code pourrait dépanner I c tous ?
Messages postés
9989
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 juillet 2021
2 161
Bonjour

Comme signalé par via55
pas de = après MsgBox mais une (
pas de retour chariot après Then

Cette syntaxe me semble correcte

For n = 2 To 62 
  If Sheets("Feuille4").Range("D" & n).Value = D And Sheets("Feuille4").Range("E" & n).Value = H Then MsgBox( "Existe ligne " & n): Exit For 
Next n 
End Sub 

Si ça ne fonctionne pas, envoies
- soit l'intégralité de la procédure
- soit la partie concernée de ton fichier au format excel 2003 sur cjoint.com et joins le lien obtenu à ton prochain message

bonne suite
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

Cela ne marche toujours pas.

Je reviens vers vous demain je suis actuellement en déplacement.
merci de m'accorder votre temps ;)
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

http://cjoint.com/data3/3Dqjsy4410F.htm

Voilà mon doc:
-La première feuille l'utilisateur tape un diamètre et une hauteur.
-Sur la deuxième feuille se trouve une base de donnée.

Donc en entrant le Diamètre puis la hauteur j'aimerai que mon programme m'indique si ce couple de valeur existe dans l'autre page.
Merci :)
Messages postés
9989
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 juillet 2021
2 161
un exemple
https://www.cjoint.com/?3Dqkd47Pv4m

bonne journée
Messages postés
18
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
30 avril 2013

Merci beaucoup :)
Hâte d'avoir un niveau semblable (encore 3 ou 4 ans !)

Bonne journée :)
Messages postés
9989
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 juillet 2021
2 161
De rien

Un petit détail m'avait échappé (le n° de ligne, mais tu as certainement complété)
  If (DD = D And HH = H) Then 
    MsgBox "Le couple D = " & D & ", H = " & H & " est dans la liste à la ligne " & li

peux tu mettre le problème à résolu (en haut de a première demande)

cordialement