VBA: object variable or With block variable not set

  • Initiateur de la discussion Initiateur de la discussion SaraBilmem
  • Date de début Date de début

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 !

SaraBilmem

XLDnaute Nouveau
Bonsoir,

Etant dans un fil dont le sujet n'est plus trop le même, je me permets de ré-ouvrir une discussion sur ce qui suit:

- A quoi est dû notification : object variable or With block variable not set?

Car dans mon cas, le "with" est précisé...

Merci d'avance pour votre aide.

Sara

Le code (qui se trouve déjà dans une autre discussion) est le suivant:

Code:
Sub Macro1()

Application.ScreenUpdating = False

Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim o As Object 'déclare la variable o (Onglet)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

With ThisWorkbook.Sheets("PENSIONERS") 'prend en compte l'onglet "Feuil1"

dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne dl de la colonne A (=1) (à adapter si besoin)
    Set pl = .Range("D2:D" & dl) 'définit la plage pl (à partir de la deuxième ligne, tu modifieras si besoin)
    For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
        Select Case cel.Value 'agit en fonction de la valeur de la cellule cel
            Case "IN" 'cas "Super"
                Set o = ThisWorkbook.Sheets("IN") 'définit l'onglet o
            Case "NORMAL" 'cas "Moyen"
                Set o = ThisWorkbook.Sheets("OUT") 'définit l'onglet o
        End Select 'fin de l'action en fonction de ...
    
        'définit la cellule de destination (A1 si A1 est vide, sinon la  première cellule vide de la colonne A)
    
    Set dest = IIf(o.Range("A3") = "", o.Range("A3"), o.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)).Range(.Cells(cel.Row, 1), .Cells(cel.Row, 3)).Copy
    Next cel 'prochaine cellule de la boucle
    Set pl = Nothing 'libération des objets
    Set dest = Nothing
End With 'fin de la prise en compte de l;'onglet "Feuil1"

End Sub
 
Oui C'est certain. Je viens de modifier la ligne de code qui posait pbm, c'est à dire MonMessage.Send par MonMessage.Display, et la le mail s'ouvre et je peux l'envoyer.

Je vais me contenter de cette option. Merci pour votre aide!
 
- 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
3
Affichages
607
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
648
Réponses
4
Affichages
367
Réponses
2
Affichages
422
Retour