Récupérer une ligne en fonction d'une donnée dans une cellule
Tortuel
-
8 oct. 2013 à 18:21
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
17 oct. 2013 à 22:38
Bonjour
Je souhaite faire un programme dans Excel qui me permettrait de récupérer une ligne en fonction d'une valeur dans une cellule.
J'ai une ligne dans une feuille "A" : composé de 3 cellules.
Je veux récupérer la ligne si l'utilisateur saisit une valeur numérique dans une cellule, dans une autre feuille (l'utilisateur saisit une quantité dans une cellule et je veux récupérer la ligne dans une autre feuille)
Je veux que la récupération de la ligne se fasse que lorsque l'utilisateur clique sur un bouton "Valider".
Si vous avez des idées, pour m'aider, je débute dans le VBA et j'ai du mal pour faire des choses aussi compliqués...
Merci à vous,
A voir également:
Récupérer une ligne en fonction d'une donnée dans une cellule
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 9 oct. 2013 à 19:34
Ce n'est pas nécessaire pour si simple et si peu !
commence donc par écrire dans l'évènement worksheet_change :
msbox target.value & vbcrlf & target.address
va ensuite dans une cellule de ton choix, saisis-y n'importe quoi puis change de cellule et regarde ce qui se produit (cela devrait déjà t'éclairer)
De manière plus générale et plus franche : tu ne devrais pas commencer à développer sans avoir au moins appris les rudiments de ton outil.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 Modifié par ucfoutu le 9/10/2013 à 19:44
Ce ne sont pas les tutoriels qui manquent sur la toile, pourtant !
Bien que, personnellement, je n'en aie suivi aucun, l'aide VBA (que j'ai lue) l'ayant suffi.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 8 oct. 2013 à 18:29
Bonjour,
Intéresse-toi (ton aide VBA) :
- à l'évènement WorkSheet_change et à ce qu'est son paramètre Target (nul besoin d'un bouton "valider")
- à IsNumeric
Reviens (c'est ici la règle) avec le code au moins tenté.
Tortuel
Messages postés7Date d'inscriptionmardi 8 octobre 2013StatutMembreDernière intervention26 avril 2014 9 oct. 2013 à 18:30
J'ai regardé la signification de ces fonctions mais je n'arrive pas à comprendre comment faire mon code pour que cela marche.
Est-ce bien de commencer par du pseudo-code pour représenter ce que je veux ?
Tortuel
Messages postés7Date d'inscriptionmardi 8 octobre 2013StatutMembreDernière intervention26 avril 2014 9 oct. 2013 à 20:44
Merci pour vos réponses, je connais déjà ces tutoriels :)
J'ai aussi le bouquin "le VBA pour les nuls" et je m'y mets autant que je peux.
Cordialement,
Tortuel
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 Modifié par ucfoutu le 9/10/2013 à 21:12
Moi, je veux revenir sur cette question :
"Est-ce bien de commencer par du pseudo-code pour représenter ce que je veux ? "
Il se trouve que ce pseudo-code serait du genre :
Si valeur-cellule modifiée alors
Si modifiée par une valeur numérique alors
copier toute la ligne où cette modification a été effectuée
la coller sur une autre feuille
fin si
fin si
et il se trouve que Excel/VBA :
- pour la 1ère ligne de ce code : sait que cela a été fait car déclenche un évènement (workSheet_Change). Et qu'il sait quelle cellule a été modifiée (Target) et donc la ligne concernée (Target.row). Cet évènement est parfaitement exposé dans ton aide VBA (frappe Worksheet.Change dans ton aide)
- pour la seconde ligne, la fonction Isnumeric (dont je t'ai parlé) de VBA permet de savoir si oui ou non la saisie est de type numérique. Cette fonction est parfaitement exposée dans l'aide VBA et y est assortie d'une exemple fort clair.
- pour les 3ème et 4ème lignes : ouvre ton aide VBA sur le mot Copy et choisis la rubrique "Range.copy, Méthode". La également : exposé clair, assorti d'un exemple non moins clair !
Tu vois ? ==>> Il n'y a plus qu'à !
Reviens avec ton code d'essai sur ces bases, si encore en difficulté malgré ces lectures indispensables.
Tortuel
Messages postés7Date d'inscriptionmardi 8 octobre 2013StatutMembreDernière intervention26 avril 2014 10 oct. 2013 à 11:05
Merci pour ta réponse, je vais faire des essais et je te dit si cela fonctionne mais ton cheminement me semble clair, maintenant y a plus qu'a me faire comprendre de VBA :)
Tortuel
Messages postés7Date d'inscriptionmardi 8 octobre 2013StatutMembreDernière intervention26 avril 2014 13 oct. 2013 à 22:25
Voila mon code :
Private Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Target, Cells(C2:C5)) <> 0 Then
Cells(Target.Row, 3)= Worksheets("Feuil1").Range(1,1).Copy _
destination:=Worksheets("Feuil2").Range("A5")
Else
MsgBox "Entrée une valeur numérique !"
End If
End Sub
Ça ne marche pas, il me dit erreur de syntaxe sur le IsNumeric (ce que je comprends mais moi je veux l'appliquer que dans la cible C2:C5 non ?)
Public Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Range("C2:C7")) And (Target("C2:C7")) <> 0 Then
MsgBox "Vous allez commander cette référence"
Else
MsgBox "Entrée une valeur numérique !"
End If
End Sub
J'ai testé ce code, qui est à la suite d'un code sur Worksheet_Change et il me donne "Nom ambiguë détecté".
Vous n’avez pas trouvé la réponse que vous recherchez ?
Modifié par ucfoutu le 9/10/2013 à 19:44
Bien que, personnellement, je n'en aie suivi aucun, l'aide VBA (que j'ai lue) l'ayant suffi.