> Tous les forums > Forum Bureautique
 on error goto sur une fonction de rechercheSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
deb56
  Posté le 12/11/2016 @ 11:21 
Aller en bas de la page 
Petit astucien

Bonjour à tous.

Décidément, je ne digère pas la gestion d'erreur en VBA! Mon pb: je veux faire une recherche d'une valeur dans une feuille (et l'atteindre, bien sûr). J'ai donc écrit la macro suivante, qui fonctionne bien si l'entrée "nom" est retrouvée. Mais si l'entrée n'existe pas, au lieu de passer sur la gestion d'erreur, ma macro bugue. (erreur code 91) . Serait-ce un problème dans la définition de "nom"??

Si un champion pouvait étudier la macro ci-dessous et me la corriger, ce serait merveilleux. Merci d'avance pour vos aides.

Sub VerifDroits()

Dim identifiant As String, mdp As String, mdpR As String, educ As String

Dim medic As String, psy As String, admin As String, nom As String

nom = InputBox("Veuillez entrer votre nom ci-dessous.", Title:="Recherche de nom")

On Error Resume Next ( j'avais essayé: on error goto ErreurIdentif mais ça ne fonctionne pas non plus)

Cells.Find(what:=nom, After:=ActiveCell, LookIn:=xlValues, LookAt:= _

xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _

, SearchFormat:=False).Activate

If Err.Number > 0 Then GoTo ErreurIdentif

........

mdpR = Range("F" & r).Value

mdp = InputBox("Veuillez entrer ci-dessous votre mot de passe (respecter la casse).", Title:="Mot de passe requis")

........

If mdp <> mdpR Then GoTo ErreurIdentif (ça, ça fonctionne.)

.........

Exit Sub

ErreurIdentif:

MsgBox "Votre nom n'est pas retrouvé" & vbCr _

& "ou votre mot de passe est inexact." & vbCr _

& "Vous ne pouvez pas poursuivre cette tâche." & vbCr & vbCr _

& "Veuillez recommencer l'identification" & vbCr _

& " ou contacter votre Administrateur.", vbOKOnly

End Sub



Modifié par deb56 le 12/11/2016 14:30
Publicité
Titus68
 Posté le 12/11/2016 à 14:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Pour tester les erreurs, je préfère mettre if Err.Number <> 0 car il peut y avoir des valeurs négatives.

Pour ton pb., avec on error resume next, il devrait continuer. Si tu mets en commentaire le on error (avec une apostrophe en début de ligne) et que tu relances, çà se plante sur quelle ligne exactement ?

Titus68
 Posté le 12/11/2016 à 14:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

apparemment avec cells.find (que je n'ai encore jamais utilisé), çà a l'air un peu spécial, il faudrait plutôt partir sur quelquechose comme çà :

dim rResult as range

Set rResult = Cells.Find(..., ActiveCell ...)

If rResult is nothing then GoTo ErreurIdentif

deb56
 Posté le 12/11/2016 à 14:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour, Titus68. Et merci de tes réponses rapides.

J'ai mis en gras la ligne qui bugue dans mon 1er message. Ça fonctionne s'il existe une correspondance à "nom". Ça ne bugue que s'il n'y a pas de correspondance, au lieu de donner un message "Microsoft Excel ne trouve pas les données que vous recherchez" comme lorsque l'on fait la recherche directement dans le classeur.

Au départ je n'avais pas écrit On Error Goto... ni On Error Resume Next. Je n'ai essayé (les 2) que parce que j'ai testé le fonctionnement et que j'ai eu le gag. Donc mettre ' devant ne résoudra pas le problème.

Je vais essayer ta solution Set rResult = et je te tiens au courant. Encore merci et à bientôt.

deb56
 Posté le 12/11/2016 à 16:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

, Titus68.

C'est ok. Ta solution m'a fait peur, car je n'avais plus de résultat positif. En effet elle renvoie bien le résultat à VB, mais elle ne sélectionne pas la cellule trouvée. Il faut donc y ajouter rResult.select, après le renvoi d'erreur. Ça fonctionne impeccable et mon problème est résolu.

Tous mes remerciements pour cette aide efficace ++. deb56

Titus68
 Posté le 12/11/2016 à 18:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Content pour toi et merci pour le retour !

ferrand
 Posté le 13/11/2016 à 15:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Juste une remarque : pourquoi sélectionner ?

Le seul effet ( utile ??? ) en est de ralentir VBA !

Cordialement.

deb56
 Posté le 13/11/2016 à 18:34 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir, Ferrand.

J'avais simplifié ma demande initiale. En fait, j'ai tout un tas de manips portant sur les cellules de la même ligne, relatives à cette sélection d'un nom dans une liste qui devrait devenir conséquente avec le temps, y compris des écritures et des concanténations dans certaines d'entre elles. C'est trop risqué pour moi de me lancer dans ce travail sans contrôle visuel de ce que je fais.

Merci de ton attention. Bonne fin de WE.

ferrand
 Posté le 14/11/2016 à 01:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

A ton aise . Mais si tu programmes, ce n'est pas pour regarder ce que tu fais, au contraire, c'est pour que ce soit fait sans ton intervention en cours d'exécution...

Et sélectionner n'est JAMAIS nécessaire pour agir en VBA, mais TOUJOURS un indice de mauvaise qualité du code...

Cordialement.

deb56
 Posté le 14/11/2016 à 09:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonne remarque, Ferrand!

Une fois sûr que ça fonctionne correctement, je peux modifier le code pour éviter les déplacements de sélection au max. Cependant, pour modifier la visibilité d'une ligne (ne voir que cette ligne) à partir d'une cellule active trouvée par cells.find, il faut bien que je selectionne cette cellule active, non? Sinon, je ne vois pas comment faire. ?? Mais je peux tester.

Cordialement.

deb56
 Posté le 14/11/2016 à 10:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Re-bonjour, Ferrand.

En cherchant un peu, mes essais confirment (une fois de plus) ta grande maîtrise de VBA (entre autres)! Je n'ai plus qu'à reprendre toutes mes macros pour simplifier et ne sélectionner que quand j'ai des modifs manuelles à y faire.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
15,37 €Clé USB Sandisk Ultra 128 Go à double connectique USB 3.1 Type A et C à 15,37 €
Valable jusqu'au 29 Mai

Amazon fait une promotion sur la clé USB Sandisk Ultra 128 Go à double connectique USB 3.1 Type A et C qui passe à 15,37 €. Cette clé USB  dispose d'un connecteur réversible USB Type C et d'un connecteur classique de type A. Grâce à elle, transférez en toute simplicité et rapidement (jusqu'à 150 Mo/s) vos fichiers entre vos smartphones, tablettes et ordinateurs. On la trouve ailleurs à plus de 30 €.


> Voir l'offre
94,99 €Disque dur Seagate NAS Iron Wolf 4 To à 94,99 €
Valable jusqu'au 28 Mai

Cdiscount propose le disque dur Seagate IronWolf 4 To à 94,99 €. Ce disque dur 3.5 pouces SATA III est adapté aux NAS et ordinateurs qui fonctionnent 24h/24. On le trouve ailleurs à partir de 105 €. Disque CMR.


> Voir l'offre
239,99 €Solution Wifi 6 Mesh Netgear Orbi Pro Mini SXK30 (AX1800, couverture jusqu'à 375 m²) à 239,99 €
Valable jusqu'au 28 Mai

Amazon fait une belle promotion sur le Kit Wifi 6 Mesh Netgear Orbi Pro Mini SXK30B3 qui passe à 239,99  alors qu'on le trouve ailleurs à partir de 337 €. Avec Orbi, vous bénéficiez d’un Wifi étendu n’importe où chez vous sans perte de connexion. Ce Kit Orbi avec un routeur à brancher sur votre box et deux satellites vous permettra de couvrir jusqu’à 375 m² grâce à son Wifi 6 AX1800. 

Profitez d’un streaming simultané et sans interruptions de films, jeux, appels vidéo ou téléchargez/transférez des fichiers à une vitesse Wifi de 1,8 Gbit/s.

Vos équipements (jusqu'à 40) peuvent se déplacer entre les différents modules Orbi sans avoir à se reconnecter.

Toute la surface de votre maison sera couverte par un réseau ultra rapide, vous offrant ainsi des performances Wifi inégalées partout où vous allez. Vous avez besoin d’une couverture supérieure ? Il vous suffit d’ajouter un satellite Orbi pour étendre instantanément votre couverture Wifi.


> Voir l'offre

Sujets relatifs
vba fonction on error resume next et excel 2013 non commercial?
Fonction recherche par InputBox
Recherche d'une fonction dans EXCEL
Fonction RECHERCHE d'Excel
Fonction RECHERCHE V
fonction recherche ou bien une autre ?
fonction RECHERCHE
Recherche une fonction dans le tableau de writer
Marco ou fonction pour recherche des données
Fonction Recherche sur Excel
Plus de sujets relatifs à on error goto sur une fonction de recherche
 > Tous les forums > Forum Bureautique