CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 2018
-
25 mai 2007 à 22:53
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
26 mai 2007 à 14:01
Bonjour à tous,
Je ne me sors pas de la réponse #N/A qui peut m'être retournée par RECHERCHEV...
Dans Excel, je saisie une valeur (en A4) dans une feuille "Fiche". Au lancement de la macro, une nouvelle feuille sera crée qui portera pour nom la valeur entrée en A4 ; de plus, cette même valeur sera reportée en colonne A à la première ligne vierge d'une troisième feuille Sommaire (jusque là pas de problème). Bien sûr il ne faut pas entrer en A4 une valeur déjà existante (plantage de la macro à la création de la feuille demandée puisqu'elle existe déjà...). Pour lancer un warning, j'ai pensé utiliser REHERCHEV et reprendre le résultat dans la macro : Pas de soucis quand c'est VRAI, mais ça casse quand la valeur retournée est #N/A dans la cellule AC1...
Ci-dessous la macro en question :
Private Sub Enregistrer_Click()
n = Range("A4").Value ' valeur saisie dans A4
v = Range("AC1").Value ' Valeur renvoyée en AC1=SI(A4=0;0;RECHERCHEV(A4;Sommaire!$A$3:$A$256;1;FAUX))If (v) (n) Then ' si vrai> OK, le "doublon est bloqué, mais si faux (#N/A): ça ne passe pas à Else...
Application.Run "RetourSommaire" ' retour au sommaire (perte des saisies)
' Doublon.Show ' Option UserForm "Alerte Doublon" pour un message d'erreur avant)
Else
Sheets("Fiche").Select
I = Sheets.Count
Sheets("Fiche").Copy After:=Sheets(I)
Sheets("Fiche").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("Fiche (2)").Select
ActiveSheet.Shapes("Enregistrer").Select
Selection.Delete
Sheets("Fiche (2)").Name = CStr(Range("A4").Value)
Application.Run "CopierVersSommaire"
End If
End Sub
Voilà mes 2 questions :
Est-il possible de "récupérer" la valeur #N/A sous une forme (texte?) permettant que la macro déroule ?
Peut-être y-a-t'il "plus simple" que de tenter de reprendre le résultat de RECHERCHEV ?
Toute aide grandement appréciée d'avance !
Merci, et pardon d'être un peu long...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 25 mai 2007 à 23:36
Si la formule que tu mets en AC1 te retourne #N/A, c'est qu'elle ne trouve pas la valeur, ce qui est OK. Si tu ne veux pas voir de #N/A, il faut ajouter une condition [ Si(Esterreur) ] à cette formule.
SI(A40; 0; Si(ESTERREUR(RECHERCHEV(A4;Sommaire!$A$3:$A$256;1;FAUX)); "X" ; RECHERCHEV(A4;Sommaire!$A$3:$A$256;1;FAUX)))
ou encore A:A au lieu d'un Range fixe comme $A$3:$A$256 à moins que ce Range ne change jamais
=SI(A4=0; 0; Si(ESTERREUR(RECHERCHEV(A4;Sommaire!A:A;1;FAUX)); "X" ; RECHERCHEV(A4;Sommaire!A:A;1;FAUX)))
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 26 mai 2007 à 10:38
Merci à toi MPI : Toujours aussi rapide !
Je ne connaissais pas ESTERREUR...
Entre temps j'ai tenté une toute autre approche, mais j'ai calé car je n'ai pas su trouver la syntaxe qui permet de renvoyer le numéro de la ligne d'une cellule sélectionnée un truc du genre "L = ActiveRow.Value" (qui n'est évidemment pas bon).
Mais c'est un autre topic, et je vais continuer de chercher avant d'éventuellement le lancer.
Grâce à toi, mon affaire avance bien ; merci encore .
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 26 mai 2007 à 14:01
EstErreur gère tout type d'erreur d'une formule.
Dans ton cas, comme la fonction retourne #N/A, tu aurais pu utiliser EstNA.
Personnellement, par habitude, j'utilise exclusivement EstErreur
Plusieurs autres fonctions commencent par ce EST qui ciblent différents types de retours de fonctions (#REF!, #DIV/0!, ...
Pour le numéro de la ligne, essaie ActiveCell.Row, si la cellule est bien activée.