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 :

Impossible de lancer une macro depuis un module [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Impossible de lancer une macro depuis un module
    Bonjour bonjour,

    J'ai un petit problème avec mon userform... J'essaye de l'appeler depuis un module et c'est impossible .... J'ai essayé la fonction Show, la fonction Load et rien n'y fait... Ce qui est étrange, c'est que si j'exécute l'userform depuis la fenêtre VBA (via F5), cela fonctionne parfaitement.
    Je vous présente la situation, l'utilisateur charge son fichier texte via le module puis il est analysé et 2 graphes apparaissent. Je souhaite que ces 2 graphes s'affichent dans un userform; ainsi je les sauvegarde temporairement en tant que .gif via ma procédure dans l'userform2.


    Voici mon module :

    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
     
    Sub data_from_text()
     
    '
    'user pick the *.txt that has been downloaded
    '
     
    'clean the sheet
     
    Worksheets(2).Activate
    Range("a1:z100").Clear
     
    Set mysheet = ActiveSheet
     
    For Each CurrentChart In ActiveSheet.ChartObjects
        CurrentChart.Delete
    Next
     
     
    Dim strTemp As String
    Dim MyDataObject As DataObject
     
     
    Dim i, j As Integer
    Dim face As String
    Dim TextPart As String
     
    Dim FileName As Variant
     
     '
     '
     ' import obj file
     '
     '
     
      FileName = Application.GetOpenFilename("TXT File (*.txt),*.txt,", 1, "Select a txt file to Import")
     
                 Open FileName For Binary As #1
     
            If FileName = False Then
                MsgBox ("No file was selected.")
            Else
                ans = MsgBox("You have selected : " & FileName _
                & "                                                                                                        Continue ?", vbOKCancel)
                    If ans = vbOK Then GoTo nextstep
                    If ans = vbCancel Then Exit Sub
     
            End If
     
    nextstep:
         strTemp = Space$(LOF(1))
        Get #1, , strTemp
     
        strTemp = Replace(strTemp, " ", vbTab)
     
        Set MyDataObject = New DataObject
        MyDataObject.SetText strTemp
        MyDataObject.PutInClipboard
        Range("A1").PasteSpecial
     
        Close #1
     
        MyDataObject.Clear
        Set MyDataObject = Nothing
     
        mysheet.Range("A1:A65536").Find("May", LookIn:=xlValues).Select
     
        For j = 3 To 13 Step 2
            Temp = Selection.Offset(0, j).Value
            Selection.Offset(0, j - 1).Value = Temp
            Selection.Offset(0, j).Value = ""
        Next j
     
     
             'find the optimal angle
        Cells.Find("deg.", LookIn:=xlValues).Select
        OptAngle = Selection.Offset(0, -1).Value
     
     
        'sorting table
                    Cells.Find("Month", LookIn:=xlValues).Select
                For j = 0 To 12
                    Temp = ""
                    Temp = ActiveCell.Offset(j, 0).Value
                        For i = 7 To 11 Step 2
                            ActiveCell.Offset(j, i).Value = Temp
                        Next i
                Next j
     
     
                    Cells.Find("Hh", LookIn:=xlValues).Select
                    ActiveCell.Value = "Irridiation Horizontal Plane"
                For j = 0 To 13
                    Temp = ""
                    Temp = ActiveCell.Offset(j, 0).Value
                        ActiveCell.Offset(j, -1).Value = Temp
     
                Next j
     
     
                'H(angle chosen)
                    Cells.Find("Hopt", LookIn:=xlValues).Select
                    ActiveCell.Value = "Irridiation at chosen angle"
                For j = 0 To 13
                    Temp = ""
                    Temp = ActiveCell.Offset(j, 2).Value
                        ActiveCell.Offset(j, -2).Value = Temp
                    ActiveCell.Offset(j, 2).Value = ""
                Next j
     
     
                    Cells.Find("Irridiation at chosen angle", LookIn:=xlValues).Select
                    ActiveCell.Offset(0, -1).Value = "Irridiation at optimal angle"
                For j = 0 To 13
                    Temp = ""
                    Temp = ActiveCell.Offset(j, 0).Value
                        ActiveCell.Offset(j, -1).Value = Temp
                    ActiveCell.Offset(j, 0).Value = ""
                Next j
     
        MsgBox (OptAngle)
     
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=mysheet.Range("A6:D18"), PlotBy:=xlColumns
    With ActiveChart
     .Type = xlLine
     .HasTitle = True
     .ChartTitle.Text = "Average irridiation over a year"
     .ChartArea.Height = 250
     .ChartArea.Width = 500
    End With
     
     
    Set CO = mysheet.ChartObjects.Add(200, 400, 400, 200)
    CO.Chart.ChartWizard Source:=mysheet.Range("H6:I18"), gallery:=xlLine, Format:=4, PlotBy:=xlColumns, _
         HasLegend:=1
     
     
      UserForm2.Show
     
    End Sub
    La procédure dans mon USF (userform2) :

    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
    Option Explicit
     
    Private Const Fichier1 As String = "C:\ImageTempIopt.gif"
    Private Const Fichier As String = "C:\ImageTempIrr.gif"
     
    Private Sub UserForm_Initialize()
     
       'Supprime l'image si elle existe
       If Dir(Fichier) <> "" Then Kill Fichier
     
        'Définit le 1er graphique de la Feuil2
        'exporte le graphique au format image
        Worksheets(2).ChartObjects(1). _
            Chart.Export FileName:=Fichier, filtername:="GIF"
        'Affiche l'image dans l'UserForm
        Image1.Picture = LoadPicture(Fichier)
     
        'Supprime l'image si elle existe
       If Dir(Fichier1) <> "" Then Kill Fichier1
     
        'Définit le 2er graphique de la Feuil2
        'exporte le graphique au format image
        Worksheets(2).ChartObjects(2). _
            Chart.Export FileName:=Fichier1, filtername:="GIF"
        'Affiche l'image dans l'UserForm
        Image2.Picture = LoadPicture(Fichier1)
     
    End Sub
     
    Private Sub UserForm_Terminate()
       'Supprime l'image si elle existe
       If Dir(Fichier) <> "" Then Kill Fichier
     
         'Supprime l'image si elle existe
       If Dir(Fichier1) <> "" Then Kill Fichier1
     
    End Sub
    Ce que je ne comprends pas c'est que si j'utilise :

    Userform2.Show : erreur d’exécution '481' : image incorrecte

    Load Userform 2 : il m'indique en jaune : "Userform2 = <variable de l'objet ou variable de bloc With non définie"



    Voici un exemple de fichier .txt qui est inséré.

    MonthlyRadiation431451N_025938E.txt


    Merci de votre aide

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Bon finalement j'ai résolu mon problème, après multiples tentatives de changement de format d'images et multiples essais, j'ai réussi à faire apparaître le premier graphe, j'en ai déduit qu'il y avait un problème de détection pour le second. De ce fait, pour créer le 2e graphe j'ai utilisé le même code que pour le 1er et le problème a été résolu.

    Je ne comprends toujours pas pourquoi il ne le détectait pas mais bon ...

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

Discussions similaires

  1. Lancer une macro depuis un fichier .bat
    Par duflo dans le forum ImageJ
    Réponses: 2
    Dernier message: 05/07/2013, 02h58
  2. [WD-2010] Lancer une macro depuis le bandeau ou la barre d'outils
    Par Claude_Azoulai dans le forum VBA Word
    Réponses: 4
    Dernier message: 11/02/2013, 14h34
  3. [AC-2007] lancer une macro depuis un batch
    Par triaguae dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/06/2010, 11h45
  4. [VBA-E]lancer une macro depuis le bureau
    Par captaine93 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2007, 14h54
  5. [VBA-W] Impossible de lancer une macro via AddIns.Add
    Par massif dans le forum VBA Word
    Réponses: 1
    Dernier message: 06/09/2006, 15h52

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