XL 2013 Erreur à la seconde exécution du programme

Aurelangelo

XLDnaute Nouveau
Bonjour,

Lorsque j'exécute le code ci-dessous une première fois, je n'ai aucune erreur mais à la seconde, j'ai un message qui stipule
Erreur d'exécution '91' : Variable objet ou variable de bloc 'With' non définie
et qui arrive sur la ligne
Code:
Cells.Find(What:=(var)).Select

Pouvez-vous me dire mon erreur ?

D'avance merci !

Code:
Option Explicit
Private Sub Worksheet_Activate()
    Dim var As Date
    Dim numSem As Integer
    Dim NomSem As String
    Dim numLigne As Integer, numCol As Integer
    Dim Ma_Forme As Shape
    var = Format(Now(), "mm/yyyy")
    ThisWorkbook.Worksheets("Planning").Select
 
    Cells.Find(What:=(var)).Select
    
    numSem = DatePart("ww", Now(), vbMonday, vbFirstFourDays)
    If numSem < 10 Then
        NomSem = "S0" & numSem
    Else
        NomSem = "S" & numSem
    End If
    numLigne = ActiveCell.Row
    numCol = ActiveCell.Column
    Cells.Range(Cells(numLigne + 1, numCol - 1), Cells(numLigne + 1, numCol + 4)).Find(What:=(NomSem), SearchOrder:=xlByRows, LookIn:=xlValues).Select

    'Supprimer et recréer la forme à la bonne position
    For Each Ma_Forme In Sheets("Planning").Shapes
        If Ma_Forme.Name = "Ligne" Then
            Ma_Forme.Delete
            Exit For
        End If
    Next Ma_Forme
    With ThisWorkbook.Worksheets("Planning").Shapes.AddShape(msoShapeLineCallout1NoBorder, ActiveCell.Left, 0, 2.25, 5000)
        .Name = "Ligne"
        .Fill.ForeColor.RGB = RGB(255, 0, 0)
    End With
 
Dernière modification par un modérateur:

Theze

XLDnaute Occasionnel
Re : Erreur à la seconde exécution du programme

Bonjour,

On n'effectue aucune action sur un Find sans contrôler auparavant si un objet (cellule) est bien retourné !
Si rien n'est trouvé, Find ne retourne rien et donc, est à Nothing. Il faut utiliser une variable objet Range et ensuite, en contrôler l'état :
Code:
Dim Cel As Range
'...
'...
'...
Set Cel = Cells.Find(What:=(var))

If Cel Is Nothing Then Exit Sub

Cel.Select
'...
'...
 

Aurelangelo

XLDnaute Nouveau
Re : Erreur à la seconde exécution du programme

Bonjour,

Certes, ta solution répond en partie à ma question. En effet, elle évite l'erreur en ajoutant le exit Sub mais je ne comprends toujours pas pourquoi à la seconde exécution, il ne me renvoie pas la même chose ! La date reste la même et elle existe toujours dans la feuille ! Donc ce n'est pas résolu ...
 

Discussions similaires

Statistiques des forums

Discussions
315 092
Messages
2 116 118
Membres
112 665
dernier inscrit
JPHD