VBA, vérifier existence valeur
Résolu
A voir également:
- VBA, vérifier existence valeur
- Verifier un lien - Guide
- Verifier compatibilite windows 11 - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Vérifier mot de passe compromis - Guide
- Verifier branchement xdsl - Forum Freebox
3 réponses
Bonjour,
Pour accélerer le processus, je ne sais pas, mais je ne pense pas que l'on puisse faire plus rapide...
!!!!! A la place du End If par rapport au Next !!!
Par contre, pour le message à l'utilisateur, c'est beaucoup plus facile.
Tu dis dans ton code :
Si tu trouves la bonne feuille alors
tu la sélectionnes
et tu sors de la boucle et pis c'est tout
Il te suffit donc de placer un message après la boucle et de remplacer ton Exit For par un Exit Sub. Comme ça s'il ne sort pas de la procédure c'est qu'il n'a pas trouvé tes valeurs...
Pour accélerer le processus, je ne sais pas, mais je ne pense pas que l'on puisse faire plus rapide...
!!!!! A la place du End If par rapport au Next !!!
Par contre, pour le message à l'utilisateur, c'est beaucoup plus facile.
Tu dis dans ton code :
Si tu trouves la bonne feuille alors
tu la sélectionnes
et tu sors de la boucle et pis c'est tout
Il te suffit donc de placer un message après la boucle et de remplacer ton Exit For par un Exit Sub. Comme ça s'il ne sort pas de la procédure c'est qu'il n'a pas trouvé tes valeurs...
If Not a Is Nothing Then Worksheets(shFo.Name).Activate UserForm1.Hide Application.ScreenUpdating = True 'Exit For Exit Sub End If Next MsgBox "Références non trouvées dans les feuilles du classeur" Application.ScreenUpdating = True End Sub
bonjour,
Au lieu de :
For Each shFo In Worksheets
Set a = shFo.Range("A1:A2").Find(feuille, lookat:=xlWhole)
If Not a Is Nothing Then
Worksheets(shFo.Name).Activate
UserForm1.Hide
Exit For
Next
End If
Essayer :
Au lieu de :
For Each shFo In Worksheets
Set a = shFo.Range("A1:A2").Find(feuille, lookat:=xlWhole)
If Not a Is Nothing Then
Worksheets(shFo.Name).Activate
UserForm1.Hide
Exit For
Next
End If
Essayer :
For Each shFo In Worksheets If shFo.Range("A1").Formula = feuille Or shFo.Range("A2").Formula = feuille Then shFo.Activate UserForm1.Hide Exit For Else ActiveWorkbook.Saved = True ActiveWorkbook.Close MsgBox "Non trouvé" End If Next
Bonjour
peut-^tre plus rapide mais pas sûr ( à essayer)
peut-^tre plus rapide mais pas sûr ( à essayer)
Sub peutetreplusvite() Dim shFo As Worksheet, monfichier as string Dim D_onglet As Object monfichier = "X:\QEHS\QA_DOC_FE\QA_FOURNISSEURS\0_CHEMICALS_RESISTS\2011\Risques excursion Qa\graphes.xlsm" 'monfichier = "D:\documents\av-Evaluate-v3.xls" 'Application.Workbooks.Open Filename:=monfichier, ReadOnly:=True feuille = TextBox1 & " " & ComboBox1 'feuille = "Moyenne" Set D_onglet = CreateObject("scripting.dictionary") For Each shFo In Worksheets onglet = shFo.Name D_onglet.Add shFo.Name, shFo.Name Next If D_onglet.exists(feuille) Then Sheets(feuille).Activate '..... suite ton code Else GoTo erreur End If Exit Sub erreur: MsgBox feuille & "n'existe pas dans ce classeur", vbCritical ActiveWorkbook.Saved = True ActiveWorkbook.Close End Sub
bonjour,
j'ai essayé ce code, le message indiquand que la référence n'existe pas est immédiate donc il semblerait que le temps soit optimal, par contre j'ai le même message même si la référence existe ... :-(
j'ai désactivé else avec goto erreur et il ne se passe rien, donc j'imagine que c'est la vérification de l'existence de la feuille qui ne fonctionne pas
j'ai essayé ce code, le message indiquand que la référence n'existe pas est immédiate donc il semblerait que le temps soit optimal, par contre j'ai le même message même si la référence existe ... :-(
j'ai désactivé else avec goto erreur et il ne se passe rien, donc j'imagine que c'est la vérification de l'existence de la feuille qui ne fonctionne pas
Bonjour
C... s dues à la précipitation!
enlève cette ligne (c'était ma maquette)
'monfichier = "D:\documents\av-Evaluate-v3.xls"
et aussi
'feuille = "Moyenne"
et enlève l'apostrophe devant
'Application.Workbooks.Open Filename:=monfichier, ReadOnly:=True
==>
Application.Workbooks.Open Filename:=monfichier, ReadOnly:=True
excuses moi
tu dis...
C... s dues à la précipitation!
enlève cette ligne (c'était ma maquette)
'monfichier = "D:\documents\av-Evaluate-v3.xls"
et aussi
'feuille = "Moyenne"
et enlève l'apostrophe devant
'Application.Workbooks.Open Filename:=monfichier, ReadOnly:=True
==>
Application.Workbooks.Open Filename:=monfichier, ReadOnly:=True
excuses moi
tu dis...
c'est toujours le pb quand on ne maîtrise pas réellement, du coup les subtilités de sortie ou de fin ne sont pas exploitées
merci ça m'enlève des complications futures ^^