Pb pour utiliser UsedRange.Find dans une Workbook_SheetSelectionChange

Bonjour,

J'ai besoin de pouvoir utiliser un code VBA qui s’exécute à l'ouverture de mon fichier, et aussi dès que j'effectue un changement dans une feuille.

Pour ce qui concerne l'ouverture de mon fichier, dans Private Sub Workbook_Open(), ce code VBA le voici et il fonctionne bien :

    Dim re As Range
    Set re = Ws.UsedRange.Find("/", lookat:=xlPart, LookIn:=xlValues)
    If Not re Is Nothing Then
        fa = re.Address
        Do
            If Not Left(re.Address, 2) = "$G" Or Ws.Name = "FIN" Then
                sdate = replacedate(re, Format(Now, "yyyy/mm/dd"))
                If sdate > 0 Then replacetime re, Format(Now, "hh:mm"), sdate
            End If
            Set re = Ws.UsedRange.FindNext(re)
            If re Is Nothing Then Exit Do
        Loop Until re.Address = fa
    End If

Pour ce qui concerne le besoin d'exécution dès que j'effectue un changement dans une feuille, dans Private Sub Workbook_SheetSelectionChange, ce même code VBA ne fonctionne pas. J'ai une erreur sur la 2ème ligne "Set re = Ws.UsedRange.Find("/", lookat:=xlPart, LookIn:=xlValues)". J'ai essayé de mettre "Set re = Sh.UsedRange.Find("/", lookat:=xlPart, LookIn:=xlValues)" mais ça ne fonctionne pas non plus, j'ai aussi essayé de mettre "Set re = ActiveSheet.UsedRange.Find("/", lookat:=xlPart, LookIn:=xlValues)" mais ça ne fonctionne pas non plus.

Sauriez-vous comment faire pour utiliser UsedRange.Find dans une Workbook_SheetSelectionChange ? Que faut-il mettre devant ".UsedRange.Find" pour être en mesure de récupérer l'adresse de la cellule concernée par la recherche ?

Merci d'avance pour votre aide et bonne journée à vous :)

Aurélien

Bonsoir Aurelien, bonsoir le forum,

Au changement d'onglet via Workbook_SheetSelectionChange le nom de l'onglet est stocké dans la variable Sh. En adaptant ça donne :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim re As Range

Set re = Sh.UsedRange.Find("/", lookat:=xlPart, LookIn:=xlValues)
If Not re Is Nothing Then
    fa = re.Address
    Do
        If Not Left(re.Address, 2) = "$G" Or Ws.Name = "FIN" Then
            sdate = replacedate(re, Format(Now, "yyyy/mm/dd"))
            If sdate > 0 Then replacetime re, Format(Now, "hh:mm"), sdate
        End If
        Set re = Ss.UsedRange.FindNext(re)
        If re Is Nothing Then Exit Do
    Loop Until re.Address = fa
End If
End Sub

En revanche ça bug avec replacedate et replacetime ?!...

Merci mais comme je le mentionnais dans mon post initial j'avais déjà essayé avec Sh mais ça me générait aussi une erreur.

Je viens de trouver la solution, en fait dans une "Private Sub Workbook_SheetSelectionChange" si on veut faire une mise à jour de cellule alors il faut impérativement désactiver "Application.EnableEvents = False" sinon ça fait une boucle infinie !

Donc sujet résolu.

Rechercher des sujets similaires à "utiliser usedrange find workbook sheetselectionchange"