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 :

Erreur '5' argument appel de procédure incorrect [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 6
    Points
    6
    Par défaut Erreur '5' argument appel de procédure incorrect
    Bonjour,

    On m'a chargé d'automatiser un envoi de mail via VBA.
    Dans le fichier joint, feuille "Chiffres", je sélectionne un numéro de semaine en C2 et je double clique sur la même cellule ce qui me donne uniquement les jours de la semaine sélectionnée (vous verrez sur le fichier, c'est très simple / les semaines actuellement présentes sur le fichier sont celles de 15 à 24).

    Code Feuil1 :
    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
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    If Not Application.Intersect(Target, Range("C2")) Is Nothing Then
     
        Sheets("Chiffres").Select
        Range("D2").Select
        DateBase = Selection.Value
     
        RangeX = Selection.Column
        RangeY = Selection.Row
        MaCellule = Range("C2").Value
        Range("D1:RG1").EntireColumn.Hidden = False
        FIN = Selection.End(xlToRight).Column
     
        For i = RangeX To FIN Step 6
     
            For j = 0 To 5
                If CInt(Format(Cells(2, i), "ww", vbMonday)) = MaCellule Then
                    Cells(1, j + i).EntireColumn.Hidden = False
                Else
                    Cells(1, j + i).EntireColumn.Hidden = True
                End If
            Next j
     
        Next i
     
    End If
     
    End Sub
    Jusque là aucun problème, mais c'est lors de la création du mail que mon problème se crée. J'ai chopé 2 fonctions sur Excel-malin pour exporter une plage de données en tant que photo et trouver une lettre de colonne en fonction de son indice (/~\ fonction(3) = "C" /~\) que j'ai essayé de modifier à ma sauce.

    Code Module1 :
    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
     
    Public Function ExporterPlageCommeImage(PlageAExporter As Range)
    'par: Excel-Malin.com ( http://excel-malin.com )
     
    'cacher ou afficher les lignes de grille
    ActiveWindow.DisplayGridlines = False ' or True
     
        'Copier la PlageAExporter comme image dans  le Presse-papier
        PlageAExporter.CopyPicture Appearance:=xlScreen, Format:=xlPicture
     
        'Créer un nouveau  "graphique" temporaire qui servira de support - avec la taille exacte de la plage à exporter
        'With
        Charts.Add
        ActiveChart.Name = "ExportImage"
        ActiveChart.Location Where:=xlLocationAutomatic, Name:="Chiffres"
        ActiveSheet.ChartObjects(1).Left = PlageAExporter.Left
        ActiveSheet.ChartObjects(1).Top = PlageAExporter.Top
        ActiveSheet.ChartObjects(1).Width = PlageAExporter.Width
        ActiveSheet.ChartObjects(1).Height = PlageAExporter.Height
        '(Left:=PlageAExporter.Left, Top:=PlageAExporter.Top, _
        Width:=PlageAExporter.Width, Height:=PlageAExporter.Height)
        '.Name = "ExportImage"
        '.Activate
        'End With
        'Copier l'image dans le graphique, ouvrir le dialog de "Sauvegarder sous", sauvegarde le fichier et supprime le graphique temporaire
        ActiveChart.Paste
        fichierimage = ThisWorkbook.Path & "\image.jpg"
        If fichierimage = False Then Exit Function
        ActiveSheet.ChartObjects(1).Chart.Export fichierimage
        ActiveSheet.ChartObjects(1).Delete
     
    End Function
     
    Public Function NomDeColonne(NumeroDeColonne As Integer) As String
    'par: Excel-Malin.com ( http://excel-malin.com )
        NomDeColonne = Cells(1, NumeroDeColonne).Address(RowAbsolute:=False, ColumnAbsolute:=False)
        NomDeColonne = CStr(Left(NomDeColonne, Len(NomDeColonne) - 1))
    End Function
    Code ThisWorkbook (mon main) :
    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
     
    Sub Mail()
     
    Dim MyOlapp As Object
    Dim myItem As Object
    Dim olMailItem
    Dim myRecipient
    Dim myAttachments
    Dim myMail
     
    variable = Module1.NomDeColonne(FIN + 1)
     
    Call Module1.ExporterPlageCommeImage(Range("A1:" & variable & "28"))
     
    EmailSup = "adressemail@oui.fr"
     
    'Là, je créé mon tableau
     
    Dim strHTML As String
     
        strHTML = ""
        strHTML = strHTML & "<html><style type='text/css'>body{font-family:'Lato','sans-serif';font-size:13;} #customers {border-radius: 15px;font-family: 'Trebuchet MS', Arial, Helvetica, sans-serif;border-collapse: collapse;"
        strHTML = strHTML & "width: 60%;} #customers td, #customers th {border: 1px solid #ddd;  padding: 8px;} #customers tr:nth-child(even){background-color: #f2f2f2;} #customers tr:hover {background-color: #ddd;} #customers th {padding-top: 12px; padding-bottom: 12px; text-align: center;background-color: #202020;color: white;}</style>"
        strHTML = strHTML & "<HEAD>"
        strHTML = strHTML & "<BODY font-family:'sans-serif';>"
        strHTML = strHTML & "Bonjour Thierry,<BR><BR>"
        strHTML = strHTML & "Voici un retour.<BR><BR><BR>"
        strHTML = strHTML & "<img src='" & ThisWorkbook.Path & "\image.jpg'/>"
        strHTML = strHTML & "<BR><BR>Bien cordialement,<BR><BR>" & Application.UserName
        strHTML = strHTML & "</BODY></html>"
        strHTML = strHTML & ""
     
    ' Là, j'envoie le mail
     
            Set MyOlapp = CreateObject("Outlook.Application")
            Set myItem = MyOlapp.CreateItem(olMailItem)
            Set myRecipient = myItem.Recipients.Add(EmailSup)
     
            Set myAttachments = myItem.Attachments.Add(ActiveWorkbook.Path & "\" & ActiveWorkbook.Name)
     
            myItem.Subject = "Tableau de semaine"
            myItem.HTMLBody = strHTML
            myItem.Display
     
        Kill ActiveWorkbook.Path & "\image.jpg"
     
    End Sub
    Sur mon PC (Excel 2016), tout marche super bien, sur le PC de tous mes collègues, en Excel 2010 ou 2013 ou 2016 tout marche... Mais seulement sur le PC de la personne qui m'a demandé ce projet (qui est sous Excel 2013 - et sachant que son PC rame en ce moment avec un disque qui travaille à 100% en constant), la création du mail bloque au moment de localisation du graphique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.Location Where:=xlLocationAutomatic, Name:="Chiffres"
    en faisant soit une erreur 400, soit une erreur '5', argument ou appel de procédure incorrect... Je ne comprends pas...

    Merci d'avance à tous ceux qui essaieront de m'aider

    Louis

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Sans sarcasme, votre collègue doit prendre un PC plus puissant car si ça tourne sur vos machines sauf la sienne, ....

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 6
    Points
    6
    Par défaut
    C'est également ce que j'essaie de lui faire comprendre... Merci pour cette indication!

  4. #4
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je suppose que le problème serait apparu avant que le code puisse s'exécuter, mais as-tu vérifier qu'il n'y a pas de librairies manquantes dans le projet sur le pc posant problème (outils/Références)?
    "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...
    ---------------

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/03/2014, 18h08
  2. Réponses: 4
    Dernier message: 05/01/2011, 22h28
  3. [XL-2003] Shell et Erreur d'exécution 5: Argument ou appel de procédure incorrect
    Par akr54 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/06/2010, 14h15
  4. Erreur d'exécution 5 ; Argument ou appel de procédure Incorrect
    Par amirad dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/12/2009, 19h34
  5. Workbooks.Open : Erreur "Argument ou appel de procédure incorrect"
    Par Kropernic dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 31/07/2008, 09h49

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