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 :

Problème appel procédure depuis autre classeur [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut Problème appel procédure depuis autre classeur
    Bonjour,

    J'ai un classeur avec 3 procédures
    Les deux première servent à l'utilisateur de saisir des variables d'entrée et la troisième à faire le traitement.

    1ere procédure l'utilisateur renseigne des inputs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub stock_select()
     Msg = "Article ?"
     Title0 = "Saisie Article"
     Itemnr = InputBox(Msg, Title)
     
        Application.Run "'MonFichier.xlsm'!GetDataFromADO“
    End sub
    2nd l'utilisateur renseigne des inputs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub to_rewind_reels()
    Msg = "Reel ?"
    Title0 = "Saisie Reel"
    Reelnr = InputBox(Msg, Title)  Input parameters
     
       Application.Run "'MonFichier.xlsm'!GetDataFromADO"
    End sub
    Jusque là pas de problème ça marche j'ai mis
    un bouton qui lance la procédure 1 et enchaine la 3
    un bouton qui lance la procédure 2 qui enchaine la 3.

    Mon souci: j'appelle ce classeur depuis un autre qui lance la première procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
        Workbooks.Open Filename:="MonFichier.xlsm", ReadOnly:=True
        Application.Run "'MonFichier.xlsm'!stock_select()"
    End Sub
    Mais dans ce cas la macro lance bien la procédure 1 qui anchaine la procédure 3 mais celle-ci ne s'exécute que partiellement et me repositionne sur l'input de la procédure 1 (bouclage).
    Pour etre complet je dirais que la procédure 3 est une requete SQL externe (celle ci s'exécute bien, par contre après j'ai une mise en forme des données et c'est celle-ci qui ne se fait pas et me renvoie à ma sélection.

    Je ne sais pas si c'est clair mais merci de votre aide
    Denis

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    que veux tu dire par forme des données? changement de couleur, mes en forme des données (format de cellule)? car dans ce dernier cas le format peut ce gérer directement dans ta requête SQL!

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Merci pour l'intérêt à mon problème.
    Pour mon problème, je précise qu'au départ j'avais une seule procédure appelée, et dans ce cas quand je l'appelais depuis mon premier fichier ça marcahit sans problème.

    Maintenant j'ai le souci parce que j'apelle une première procédure qui elle même en appelle une seconde je pense.

    Pour les mises en formes
    Il s'agit de tri de filtragse de calcul entre les valeurs puis de mise en couleur avec MFC.

    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
        '
    Open Recordset'
            Set objMyRecordset.Source = objMyCmd
            objMyRecordset.Open
        Range("d2").Select
        ActiveSheet.Range("d2").CopyFromRecordset objMyRecordset
     
    ' variable last existing line
    Dim down_line
    '  Formulas to get material ID root
        Range("B2").Select
        ActiveCell.FormulaR1C1 = "=LEFT(RC[4],8)"
        Range("C2").Select
        ActiveCell.FormulaR1C1 = "=IF(MID(RC[3],9,1)=""_"",""WIP"","""")"
     
    ' Copy the formula for existing lines
        Range("F2").Select
        down_line = Selection.End(xlDown).Row
        If down_line > 0 Then
        Range(Cells(2, 2), Cells(down_line, 3)).Select
        Selection.FillDown
        End If
     
    ' copy values to avoid recalculing when filtering
        Columns("B:C").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    Columns("H:H").Select
        Application.CutCopyMode = False
        Selection.NumberFormat = "0"
     
    Columns("J:J").Select
        Selection.NumberFormat = "0.0"
        Selection.NumberFormat = "0"
     
    ' application filtre en fonction du statut des bobines
       Range("B2:P2").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=ET($o2=1;$P2=1)"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 5296274
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("B2:P2").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$P2>1"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("B2:P2").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ET($o2>1;$P2=1)"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent6
            .TintAndShade = 0.599963377788629
        End With
        Selection.FormatConditions(1).StopIfTrue = False
     
        If down_line > 0 Then
        Range("B2:P2").Select
        Selection.Copy
        Range("B3:P" & down_line).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
    End If
    Range("a2").Select

  4. #4
    Invité
    Invité(e)
    Par défaut
    commen veux tu sélectionner des cellules d'un autre classeur?ton classeur actif est celui qui lance la macro!
    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
        '
    Open Recordset'
            Set objMyRecordset.Source = objMyCmd
            objMyRecordset.Open
        Range("d2").Select
        ActiveSheet.Range("d2").CopyFromRecordset objMyRecordset
     
    ' variable last existing line
    Dim down_line
    '  Formulas to get material ID root
        Range("B2").Select
        ActiveCell.FormulaR1C1 = "=LEFT(RC[4],8)"
        Range("C2").Select
        ActiveCell.FormulaR1C1 = "=IF(MID(RC[3],9,1)=""_"",""WIP"","""")"
     
    ' Copy the formula for existing lines
        Range("F2").Select
        down_line = Selection.End(xlDown).Row
        If down_line > 0 Then
        Range(Cells(2, 2), Cells(down_line, 3)).Select
        Selection.FillDown
        End If
     
    ' copy values to avoid recalculing when filtering
        Columns("B:C").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    Columns("H:H").Select
        Application.CutCopyMode = False
        Selection.NumberFormat = "0"
     
    Columns("J:J").Select
        Selection.NumberFormat = "0.0"
        Selection.NumberFormat = "0"
     
    ' application filtre en fonction du statut des bobines
       Range("B2:P2").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=ET($o2=1;$P2=1)"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    'Et je m'arête là
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 5296274
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("B2:P2").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$P2>1"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("B2:P2").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ET($o2>1;$P2=1)"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent6
            .TintAndShade = 0.599963377788629
        End With
        Selection.FormatConditions(1).StopIfTrue = False
     
        If down_line > 0 Then
        Range("B2:P2").Select
        Selection.Copy
        Range("B3:P" & down_line).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
    End If
    Range("a2").Select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets("toto").Range("B2").FormulaR1C1 = "=LEFT(RC[4],8)"

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut Y as des baffes qui se perdent !!!!
    Dans ma procédure d'appel, j'ai changé le nom de la macro appelée et là j'ai laissé les () en copiant le nom de la macro

    Je n'ai pas eu d'erreur de compilation mais ça ne faisait que marchouiller.

    Maintenant que j'ai enlevé ces satanés (). Ca marche impect.

    Mon erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "'MonFichier.xlsm'!stock_select()
    Sans l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "'MonFichier.xlsm'!stock_select
    Merci et désolé de vous avoir fait perdre du temps pour ma bêtise.

    Je te rassure Robert, mes mises en forme sont bien dans le classeur appelé donc actif.

    Bon WE
    Denis

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

Discussions similaires

  1. [AC-2003] appel procédure depuis un autre formulaire
    Par petitours dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/04/2009, 14h52
  2. Problème appel Ejb depuis un webservice
    Par D.Mounir dans le forum Services Web
    Réponses: 1
    Dernier message: 18/02/2008, 09h55
  3. Lancer procédures d'autres classeurs
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/11/2007, 19h22
  4. [2000] Appel à procédure depuis des formulaires
    Par Gabout dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/11/2007, 02h13
  5. Réponses: 1
    Dernier message: 14/04/2006, 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