XL 2013 Erreur à la seconde exécution du programme

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
'...
'...
 
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 ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
403
Réponses
2
Affichages
422
Retour