IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

ma macro ne fonctionne plus


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 67
    Par défaut ma macro ne fonctionne plus
    Bonjour à tous ,

    j'avais une erreur sur le fonctionnement d'une macro qui me disait erreur 91
    variable objet ou variable bloc With non definie en mettant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTo = Sheets("emails").Cells(MaRech.Row, 2) & Chr(64) & Sheets("emails").Cells(MaRech.Row, 3)
    en jaune
    J'ai activé alors la bibliothèque cdo pour windows 2000 et elle a fonctionné pendant une semaine . Depuis hier elle ne fonctionne à nouveau plus en me remettant c'ette même erreur (en fait elle envoie 1 seul message qui est la 1ere ligne "pas livrée ?" trouvée ) Pourriez vous m'aider à comprendre
    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Sub Mail()
    '--------------------------------------------------------------------------------------
    ' Procedure : Envoi Mail Avec CDO2000; vérifier si référencé (Microsoft CDO...)
    ' Author    : Fred Vandermeulen
    ' Date      : 16/10/2009
    ' Purpose   : Envoi un mail sans message de sécurité (validation)
    ' Method:   : Déclaration tardive ("Late Binding")
    ' Microsoft CDO for Windows 2000 Library
    '---------------------------------------------------------------------------------------
    Dim Cdo_Message As Object
    Set Cdo_Message = CreateObject("CDO.Message")
    Const CdoTo = 1
    Const CdoCc = 2
    Const CdoBcc = 3
     
    Dim DerLig As Long, r As Long, DerLig2 As Long
    Dim MonTo As String, MonText As String
    Dim MaRech As Range, MaPlage As Range
    DerLig = Sheets("globale").Cells(Columns(17).Cells.Count, 17).End(xlUp).Row
    DerLig2 = Sheets("emails").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    Sheets("emails").Select 'Obligatoire pour la ligne suivante
    Set MaPlage = Sheets("emails").Range(Cells(2, 1), Cells(DerLig2, 1))
     
    Sheets("globale").Select 'Obligatoire pour la recherche
    For r = 1 To DerLig 'Boucle sur les lignes depuis la ligne 1, si il y a des titres alors changer 1 par 2
        If Sheets("globale").Cells(r, 17) = "pas livrée ?" Then 'Attention syntaxe importante, éventuellement vérifier si non vide (moins de risque)
            With MaPlage
                Set MaRech = .Find(Sheets("globale").Cells(r, 10).Value, LookIn:=xlValues) 'Récupère l'address de la cellule qui répond à la recherche
               MonTo = Sheets("emails").Cells(MaRech.Row, 2) & Chr(64) & Sheets("emails").Cells(MaRech.Row, 3) 'Récupère l'adresse e-mail par concaténation de la colonne 2 et 3
                MonText = Sheets("emails").Cells(MaRech.Row, 5) 'récupère le texte dans la colonne E (N°5)
            End With
            Set Cdo_Message.Configuration = GetSMTPServerConfig() 'Appelle la Function
            With Cdo_Message
                .To = MonTo 'Récupère la variable du destinataire
                .From = "philippe.lohr" & Chr(64) & "mondia.fr" 'Mettre addresse e-mail
                .Subject = "Wincanton delivery " & Sheets("globale").Cells(r, 2) 'Récupère le sujet
                .TextBody = MonText 'Récupère le corps du message
                '.AddAttachment ("c:cheminfichier.ext")
                .Cc = "philippe.lohr" & Chr(64) & "mondia.fr"
                .Send
            End With
        End If
    Next r
    Set Cdo_Message = Nothing
    End Sub
     
    Function GetSMTPServerConfig() As Object
    ' Microsoft CDO for Windows 2000 Library
        Const cdoSendUsingPickup = 1
        Const cdoSendUsingPort = 2
        Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
        Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
        Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
     
        Dim Cdo_Config As Object 'New CDO.Configuration
        Set Cdo_Config = CreateObject("CDO.Configuration")
        Dim Cdo_Fields As Object
        Set Cdo_Fields = Cdo_Config.Fields
     
        With Cdo_Fields
            .Item(cdoSendUsingMethod) = cdoSendUsingPort
            .Item(cdoSMTPServer) = "smtp.fr.oleane.com" 'Adapter l'adresse SMTP (voir Outlook)
            .Item(cdoSMTPServerPort) = 25
            .Update
        End With
     
        Set GetSMTPServerConfig = Cdo_Config
        Set Cdo_Config = Nothing
        Set Cdo_Fields = Nothing
     
    End Function
    Je joins le fichier avec

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour essaye de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if MaRech is nothing then
    msgbox "A pas trouvé c'est pour ca que ca plante!"
    exit sub
    end if
    juste avant la ligne jaune

    A mon avis c'est simplement que tu cherche quelque chose qui n'existe pas

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 67
    Par défaut
    Bonjour

    je joins le fichier qui montre bien qu'il y a plusieurs pas livrées et je le répete cette macro a super bien marchée pendant une semaine et depuis hier elle remet l'erreur apparue au tout début avant que je ne coche cdo librairie windows 2000
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je suis content de voir qu'il y a des pas livrée ? Mais cela ne m'aide en rien oui tu déclenche bien la macro (sinon ca ne planterais pas)
    Mais là il n'y a qu'un onglet (qui n'a pas le m^me nom que dans ton code) et aucun code pour tester)

    Comme je toute facon je préfère que ce soit toi qui teste et non moi alors est ce que tu as inséré cecode qu'est ce que cela donne

    essaye même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if MaRech is nothing then
    msgbox "A pas trouvé c'est pour ca que ca plante!"
    exit sub
    else 
    msgbox "c'est on a la cellule : " & MaRech .address
    end if
    ps : si d'une semaine sur l'autre la macro ne fonctionne plus soit tu as modifié le code soit tu as modifié les données. Il ne me semble pas avoir vu dans ton code quelque chose impliquant la date du jour en cour.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 67
    Par défaut
    J'ai trouvé la cause de cette erreur, il s'agissait d'un nouveau transporteur qui a été rajouté dans la colonne 10 de ce fait la macro produisait ce message d'erreur Merci à Krovax pour son aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Macro ne fonctionne plus sous XL-2010
    Par Pipeti dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/08/2012, 21h02
  2. Macro ne fonctionne plus lorsque je la nomme Sub auto_open()
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2012, 15h40
  3. [XL-2007] Ma macro ne fonctionne plus suite à un changement de version
    Par sebsrv dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2011, 19h42
  4. Réponses: 8
    Dernier message: 29/09/2008, 20h23
  5. macro ne fonctionne plus
    Par maguetlolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2008, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo