Microsoft 365 VBA Erreur "mémoire insuffisante"

ExcelNewbie96

XLDnaute Nouveau
Bonjour,

Je suis actuellement d'écrire un code afin de pouvoir rédiger un mail automatiquement et les afficher avant de les envoyer.

Code:
Sub SendEmail_Example1()

Dim EmailApp As Outlook.Application
Dim Source As String
Set EmailApp = New Outlook.Application

Dim EmailItem As Outlook.MailItem
Set EmailItem = EmailApp.CreateItem(olMailItem)

Dim i As Long, lastrow As Long

Dim Cell As Range

lastrow = Cells(Rows.Count, "C").End(xlDown).Row

For Each Cell In Cells(Rows.Count, "M")

If Cells.Value = "YES" Then
EmailItem.To = Range("K").Text
EmailItem.Subject = "Reminder missing element for project " & Cells(i, 5).Text
EmailItem.HTMLBody = Cells(i, 13).Text
EmailItem.Display

End If


Next Cell

End Sub



Le problème est que le code bloque au niveau de la ligne en orange. Le message d'erreur indique "mémoire insuffisante". Quelqu'un aurait une solution à me proposer je vous prie ?

En vous remerciant !! :)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Cells.Value va tenter d'évaluer les 17 179 869 184 cellules de la feuille ??????

Toujours une très, très mauvaise idée que de donner un nom réservé VBA à une variable. Il se mélange les pinceaux et le développeur aussi !

Votre variable de boucle for est 'Cell' pas 'Cells'.

Cells est un nom réservé VBA renvoyant l'ensemble des cellules de la feuille.

Autre méprise :
Cells(Rows.Count, "M") = 1 seule cellule : $M$1048576

Cordialement
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Cells est un nom réservé VBA
En fait c'est une méthode des objets Worksheet et Range défini par la bibliothèque Excel.
Même les identifiants de la bibliothèque VBA ne sont pas des noms réservés.
Bien sûr, il faut éviter de reprendre pour une variable perso le nom d'une de ses procédures standard, sous peine de devoir préciser devant la bibliothèque pour l'utiliser. Par exemple VBA.Format pour utiliser cette fonction si on a quelque chose de perso connu à cet endroit sous le nom Format.
À la limite je conseillerais plutôt, au contraire, de reprendre en tant que propriété d'un module de classe, mais à des fins obligatoirement très similaires, quelques noms comme Count, Index, Item, Add, Delete archi-utilisés dans de nombreux types d'objets …
 

Discussions similaires

Réponses
7
Affichages
543
Réponses
1
Affichages
388

Statistiques des forums

Discussions
314 662
Messages
2 111 640
Membres
111 242
dernier inscrit
Oyam