Microsoft 365 Activer un classeur dont le nom commence par et sortir du code si il n'existe pas

chris6999

XLDnaute Impliqué
Bonjour le FORUM

Grâce à l'aide du forum, j'ai réussi à faire fonctionner mon code qui consistait à activer un classeur (déjà ouvert) dont le nom commençait par REQUÊTE.

'Si présence d'un classeur commençant par REQUETE l'active
If UCase(wb.Name) Like "REQUÊTE*" Then wb.Activate: Exit For
Next wb


Mon souci maintenant c'est de ne pas poursuivre la procédure si le système ne trouve pas de fichier commençant par REQUÊTE...
J'ai bien essayé d'ajouter
'If Not UCase(wb.Name) Like "REQUÊTE*" Then
mais cela ne fonctionne pas !
Avec ce rajout "bricolé", même s'il existe un classeur ouvert commençant par REQUÊTE le système m'affiche le message "Pas de fichier OUVERT".

Je pense que c'est la notion de UCASE que je ne maitrise pas et qui ne doit pas convenir à mon projet.

Quelqu'un aurait-il une solution à mon problème?
D'avance merci à ceux qui pourront m'aider à y voir plus clair.

Bonne journée à tous


Mon code complet

Sub test ()

Dim wb As Workbook
For Each wb In Workbooks

'vérifie qu'il a bien un classeur ouvert commençant par REQUETE
'Si ce n'es pas le cas sort de la mcro après MGBOX Info
'If Not UCase(wb.Name) Like "REQUÊTE*" Then
'MsgBox ("Pas de fichier ouvert")
'Exit For
'Exit Sub
'End If

'Si présence d'un classeur commençant par REQUETE l'active
If UCase(wb.Name) Like "REQUÊTE*" Then wb.Activate: Exit For
Next wb

end sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Chris,
Je ne pense pas que ce soit Ucase qui pose problème, mais la structure de votre macro.
Essayez celle ci, je l'ai testée et elle marche correctement :
VB:
Sub test()
    Dim wb As Workbook
    For Each wb In Workbooks
        'Vérifie si le classeur exéminé commence par REQUÊTE
        If UCase(wb.Name) Like "REQUÊTE*" Then
            wb.Activate     ' Si oui, on l'active
            Exit Sub        ' Et on sort de la macro
        End If
    Next
    'Si on arrive ici, c'est qu'aucun fichier ne commence par REQUÊTE
    MsgBox ("Pas de fichier ouvert commençant par REQUÊTE")
End Sub
 

chris6999

XLDnaute Impliqué
Bonjour Chris,
Je ne pense pas que ce soit Ucase qui pose problème, mais la structure de votre macro.
Essayez celle ci, je l'ai testée et elle marche correctement :
VB:
Sub test()
    Dim wb As Workbook
    For Each wb In Workbooks
        'Vérifie si le classeur exéminé commence par REQUÊTE
        If UCase(wb.Name) Like "REQUÊTE*" Then
            wb.Activate     ' Si oui, on l'active
            Exit Sub        ' Et on sort de la macro
        End If
    Next
    'Si on arrive ici, c'est qu'aucun fichier ne commence par REQUÊTE
    MsgBox ("Pas de fichier ouvert commençant par REQUÊTE")
End Sub

Bonjour et merci pour ta solution Sylvanu

Après plusieurs tests je confirme que cela fonctionne.
J'ai du trouver l'endroit où ajouter le reste de ma procédure mais je pense que je tiens le bon bout.

Du coup voilà cela donne pour ceux qui auraient les mêmes besoins que moi.

Merci encore et bonne journée

Sub test()
Dim wb As Workbook
For Each wb In Workbooks
'Vérifie si le classeur exéminé commence par REQUÊTE
If UCase(wb.Name) Like "REQUÊTE*" Then
wb.Activate ' Si oui, on l'active


Le reste de ma procédure à traiter si classeur trouvé ......

Exit Sub ' Et on sort de la macro
End If

Next
'Si aucun fichier ne commence par REQUÊTE
MsgBox ("Pas de fichier ouvert commençant par REQUÊTE")

End Sub

 

Discussions similaires

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi