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 :

Application.Run de différents modules d'une même MacroComplementaire : 1 argument non facultatif sur 3 [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 77
    Par défaut Application.Run de différents modules d'une même MacroComplementaire : 1 argument non facultatif sur 3
    Bonjour,

    Je ne comprends pas, Application.Run ("MacroComplementaire.CoursForces") a un message d'erreur : argument non facultatif alors que Application.Run ("MacroComplementaire.CreationPortefeuilleSOFI") et Application.Run ("MacroComplementaire.creationValorisation") fonctionnent.
    Pourtant rien les différencie : c'est 3 différents modules d'un même classeur excel.
    Merci beaucoup !

    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
    Sub TraitementSheet(Sh As Worksheet)
    Dim Plage As Range
    Dim Cel As Range
     
     
     ThisWorkbook.Worksheets("Feuil1").Range("B3:B4").Copy
     
      'Activation du classeur cible
      ActiveWorkbook.Activate
      Worksheets("Valorisation").Activate
    Worksheets("Histo").Activate
     
      'Sélection de la cellule de debut de copie
      [B3].Select
     
      'Collage de la plage de cellule
      Selection.PasteSpecial xlPasteAll
    ActiveWorkbook.Activate
      Worksheets("Valorisation").Activate
          Application.Run ("MacroComplementaire.CoursForces")
        Application.Run ("MacroComplementaire.CreationPortefeuilleSOFI")
         Application.Run ("MacroComplementaire.creationValorisation")
         End
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Le message d'erreur me semble plutôt explicite, il te manque des arguments à ta macro, quel est le code derrière MacroComplementaire.CoursForces ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 77
    Par défaut
    Il est un peu long mais le voici, j'ai essayé de mettre (1) derrière
    Application.Run ("MacroComplementaire.CoursForces") comme cela Application.Run ("MacroComplementaire.CoursForces(1)") mais le problème c'est que si je clique oui à la box qui s’affiche, le code ne fonctionne pas alors qu'il devrait (il fonctionne bien sauf quand je l'appelle avec application.Run).

    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
    Sub CoursForces(EstForce As Boolean)
     
    Dim fichierMacro As Workbook, currentWB As Workbook
    Dim cheminFichierCoursForces As String, nomFichierCoursForces As String
    Dim nbLignes As Long, compteur As Long
    Dim TAB_COURS_FORCES() As TAB_COURS_FORCES
    Dim zoneCoursForces As Range
    Dim celluleCoursForces As Range
    Dim dateValorisationOPC As Date
     
    Application.ScreenUpdating = False
     
    Set fichierMacro = ActiveWorkbook
    Set zoneCoursForces = Range(Cells(5, 12), Cells(14, 14))
    Set celluleCoursForces = Range(Cells(1, 13), Cells(1, 13))
    ActiveWorkbook.Names.Add Name:="ZoneCoursForces", RefersTo:=zoneCoursForces
    ActiveWorkbook.Names.Add Name:="celluleCoursForces", RefersTo:=celluleCoursForces
     
    Cells(3, 14).ClearContents
     
    cheminFichierCoursForces = "P:\MIDDLE\Referentiel valeurs"
    nomFichierCoursForces = "Cours forcés"
     
    '    If CheckBox1.Value = True Then
        If EstForce = True Then
            If MsgBox("Voulez-vous vraiment forcer les cours des fonds ?", vbYesNo, "Demande de confirmation") = vbYes Then
                celluleCoursForces.Value = "oui"
                zoneCoursForces.Range(Cells(1, 3), Cells(zoneCoursForces.Rows.Count, 3)).ClearContents
                Application.DisplayAlerts = False
                If OuvrirFichier(cheminFichierCoursForces, nomFichierCoursForces) = True Then
                    Application.DisplayAlerts = True
                    Set currentWB = ActiveWorkbook
                    currentWB.Activate
                    dateValorisationOPC = Cells(2, 3)
                    nbLignes = currentWB.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
                    ReDim TAB_COURS_FORCES(1 To Range(Cells(2, 1), Cells(nbLignes, 1)).Count) As TAB_COURS_FORCES
                    For i = 2 To nbLignes
                        compteur = compteur + 1
                        TAB_COURS_FORCES(compteur).ISIN = currentWB.Sheets(1).Cells(i, 2)
                        TAB_COURS_FORCES(compteur).DATE = currentWB.Sheets(1).Cells(i, 3)
                        TAB_COURS_FORCES(compteur).VL = currentWB.Sheets(1).Cells(i, 4)
                    Next i
                    Application.DisplayAlerts = False
                    currentWB.Close
                    Application.DisplayAlerts = True
                    nbLignes = Empty
                    Cells(3, 14) = dateValorisationOPC
                    For i = 1 To zoneCoursForces.Rows.Count
                        For iP = 1 To UBound(TAB_COURS_FORCES)
                            If zoneCoursForces.Cells(i, 2) = TAB_COURS_FORCES(iP).ISIN Then
                                If TAB_COURS_FORCES(iP).VL <> 0 Then
                                    zoneCoursForces.Cells(i, 3) = TAB_COURS_FORCES(iP).VL
                                Else
                                    zoneCoursForces.Cells(i, 3) = ""
                                End If
                                Exit For
                            End If
                        Next iP
                    Next i
                Else
                    MsgBox "Le fichier des cours forcés est introuvable !"
                    fichierMacro.ActiveSheet.CaseACocher.Value = 0
    '                CheckBox1.Value = 0
                    celluleCoursForces.Value = "non"
                    Exit Sub
                End If
            Else
    '            CheckBox1.Value = 0
                fichierMacro.ActiveSheet.CaseACocher.Value = 0
                celluleCoursForces.Value = "non"
                zoneCoursForces.Range(Cells(1, 3), Cells(zoneCoursForces.Rows.Count, 3)).ClearContents
                Exit Sub
            End If
        Else
            celluleCoursForces.Value = "non"
            zoneCoursForces.Range(Cells(1, 3), Cells(zoneCoursForces.Rows.Count, 3)).ClearContents
        End If
        Application.ScreenUpdating = True
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Comme tu peux le voir sur la première ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub CoursForces(EstForce As Boolean)
    Cette macro attend un paramètre, de type booléen pour être précis, donc true or false

    tu peux aussi essayer de remplacer application.run par call
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call MacroComplementaire.CoursForces(true)

  5. #5
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Le paramètre manquant :
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "MacroComplementaire.CoursForces", True 'ou False

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 77
    Par défaut
    Merci à tous, cela fonctionne !

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

Discussions similaires

  1. insertion de plusieurs modules dans une même page
    Par arkarros dans le forum jQuery
    Réponses: 1
    Dernier message: 26/04/2012, 16h02
  2. Réponses: 11
    Dernier message: 06/05/2011, 22h55
  3. Différents rendus sous une même version IE7
    Par ranell dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 30/06/2010, 14h39
  4. (VBA-E] Filtrage de différentes plages d'une même colonne
    Par ledab dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/03/2007, 12h05
  5. GAC & Différentes versions d'une même assembly
    Par Xno dans le forum Framework .NET
    Réponses: 3
    Dernier message: 25/11/2005, 11h22

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