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 :

Pb Objet requis


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut Pb Objet requis
    Bonjour à toutes et à tous,
    J'ai monté la macro ci-dessus pour envoyer un fichier Excel via la commande sendmail.
    A chaque envoi, ce message apparaît : "Oblet requis".

    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
    Sub EnvoiPage()
    Dim Adre As String
    Dim Suje As String
     
    Adre = "U02-BALosce33@cnfpt.fr"
    Suje = "Bon de commande"
     
    rep = MsgBox("Valider l'envoi du bon de commande ?", vbQuestion + vbYesNo, "Envoi du bon de commande vers U02-BALosce33")
     
    If rep = 6 Then
     
    ThisWorkbook.Sheets("BCF").Copy
    ActiveWorkbook.SendMail Adre, Suje
    ActiveWorbook.Close False
     
    If rep = 7 Then MsgBox ("Révise ta copie alors !!")
     
     Application.DisplayAlerts = False
     
    End If
     
     
    End Sub
    Ce n'est pas bloquant, le fichier par quand même, mais le fait de voir un message d'erreur apparaître à chaque fois rend le process un peu moins clean.

    Merci par avance pour vos conseil !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Markal Voir le message
    A chaque envoi, ce message apparaît : "Oblet requis".
    Quelle ligne est signalée par le débugueur ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If rep = 6 Then
        ThisWorkbook.Sheets("BCF").Copy
        ActiveWorkbook.SendMail Adre, Suje
        ActiveWorbook.Close False
     
        If rep = 7 Then MsgBox ("Révise ta copie alors !!")
     
        Application.DisplayAlerts = False
    End If
    Le second MsgBox n'a aucune chance de ce déclencher puisque rep ne peut pas être égal à 7 dans une structure If où on l'exécution ne peut entrer que s'il est égal à 6.

  3. #3
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Bonjour Menhir,
    Merci pour ta réponse.
    Le débugueur ne s'enclenche pas. Le message apparaît dans l'éditeur sans rien surligner.

    Je comprenais pas pourquoi la deuxième Msgbox ne se lancer pas, là de suite c'est plus clair. J'ai repris la formulation d'un cours, j'ai du mal comprendre.
    Pourrais-tu me dire comment lancer du coup ma deuxième Msgbox ?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Markal Voir le message
    Le débugueur ne s'enclenche pas. Le message apparaît dans l'éditeur sans rien surligner.
    J'ai du mal à comprendre ce qui affiche le message d'erreur...
    Lorsque l'éditeur signale un problème, il passe la ligne en rouge.

    Pourrais-tu me dire comment lancer du coup ma deuxième Msgbox ?
    En le sortant de la structure de ton premier If.

    Ou, mieux, en remplaçant les deux If par une structure Select Case.

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Personnellement, lorsque je vois cette "logique" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If rep = 6 Then
     ...
    If rep = 7 Then MsgBox ("Révise ta copie alors !!")
     ...
     End If
    Comment peut-on imaginer que rep pourrait être = 7 s'il est = 6 ?
    je me dis qu'il y a des choses fondamentales à appréhender, avant d'aller au-delà. Et je ne vais alors moi-même pas au-delà non plus.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Lorsque tu dois exécuter du code selon différentes valeurs que peut prendre une variable, tu as intérêt comme l'a mentionné Menhir à travailler avec un bloc Select Case... End Select. J'illustre cette technique ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    rep = msgbox(...)
    select case rep
      case vbyes
        ...
        ...
      case vbno
        ...
        ...
    end select
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Merci pour vos réponses, le select case fonctionne effectivement parfaitement, merci à Menhir et Pierre Fauconnier.


    Nom : Objet_requis.png
Affichages : 186
Taille : 55,5 Ko

    Voilà comment le message apparaît, bien que tout fonctionne comme je veux, j'ai juste ce message qui s'affiche sans activer le débogueur.

  8. #8
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Oulà, j'au du me planter dans l'insertion de l'image...

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Et ta bonne image, elle est où ?

    As-tu un on error ... quelque part dans ton code en amont du code que tu as montré? Dans les options du VBE, modifie l'arrêt sur les erreurs et place-le sur "arrêt sur toutes les erreurs". Tu verras ainsi sur quelle ligne tu plantes et ce sera plus facile pour déboguer.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorbook.Close False
    n'agirait pas un peu trop vite ?
    Essaie en mettant une petite tempo avant
    eric

  11. #11
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Effectivement, après le conseil de Pierre Fauconnier de changer le débogueur, il m'a surligner la ligne de code que m'avait indiqué eriiic... ce que vous êtes balaise messieurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ThisWorkbook.Sheets("BCF").Copy
    ActiveWorkbook.SendMail Adre, Suje
    ActiveWorbook.Close False
    Il m'a donc surligner la dernière ligne du code ci-dessus.
    Après quelques recherches sur ce forum, j'ai ajouté la ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.Sheets("BCF").Copy
    ActiveWorkbook.SendMail Adre, Suje
    Application.Wait Now + TimeValue("0:00:05")
    ActiveWorbook.Close False

    Et le message d'erreur apparait... 5 seconde plus tard qu'avant...
    Merci pour vos idées, je sens qu'on y est presque.

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    supprimé, plus la peine...
    Bien vu Pierre :-)

  13. #13
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    C'est parfois trop gros pour qu'on le voit. Bien joué Pierre.

    Le message d'erreur était pourtant clair. On ne fait pas assez confiance aux messages d'erreurs.

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Hum


    ActiveWorKbook.Close False



    PS: Prends l'habitude de saisir ton code en minuscule, activeworbook restera alors en minuscules => erreur, alors que activeworkbook deviendra ActiveWorkbook... Et ton erreur de frappe te sautera aux yeux... Prends aussi l'habitude de compiler avant de lancer ton code. De plus, Option Explicit n'est pas présent en début de module. Tu aurais intérêt à l'ajouter, cela t'obligerait à déclarer tes variables, et tu aurais eu un message d'erreur "variable non définie" avec activeworbook surligné en bleu.

    En plus d'ajouter Option Explicit en début des modules existants, passe sur Outils/Options/Editeur et coche Obligation des variables obligatoire. Cela ajoutera Option Explicit au début de chaque nouveau module
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre averti
    Homme Profil pro
    Gestionnaire financier
    Inscrit en
    Janvier 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gestionnaire financier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2016
    Messages : 19
    Par défaut
    Yeah !!! C'est parfait, merci pour vos conseils et votre patience.
    Je prend bien note d'écrire en minuscule.
    Merci encore et bonne journée, je passe en résolu.

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

Discussions similaires

  1. Objet requis: 'expXpath', contourner l'erreur
    Par totoche dans le forum ASP
    Réponses: 3
    Dernier message: 09/11/2006, 15h35
  2. [POO] objet requis dans choix de bouton radio
    Par allowen dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/11/2005, 14h46
  3. Objet requis qu'il me dit
    Par Grosmou dans le forum Access
    Réponses: 15
    Dernier message: 27/09/2005, 08h41
  4. Erreur Objet requis : 'this' --> Comprend pas!!
    Par Grozeil dans le forum ASP
    Réponses: 3
    Dernier message: 30/03/2005, 10h46
  5. Erreur "Objet requis"
    Par cindaille dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2004, 01h59

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