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 :

ne pas exécuter tout Private Sub Workbook_Open() à l'open [XL-2016]


Sujet :

Macros et VBA Excel

  1. #21
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Oui je vais essayer de comprendre, j'ai parcouru rapidement, je vais y revenir

    Mais pourquoi parle-t-on de paramètre batch ?
    Il ne savait pas que c'était impossible, donc il l' a fait...

  2. #22
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 261
    Points
    34 261
    Par défaut
    Je me suis basé sur ta phrase
    Pour optimiser je me demande si je peux ouvrir ce classeur "C" en passant un paramètre et tester ce paramètre dans Private Sub Workbook_Open() pour sauter le traitement "T"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #23
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    J'ai tout lu de cette discussion.
    Je n'y vois rien qui exprime clairement quand et dans quelles circonstances , très exactement, il faut inhiber certaines instructions.
    Je suis prêt à parier que cette précision est indispensable et qu'elle est dans le même temps le fil conducteur d'une stratégie.
    J'attends ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #24
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    si tu es prêt à t'accrocher, si je prends ta demande initiale, tu peux utiliser les passages de parametres avec Excel :

    https://jpcheck.developpez.com/tutor...ge-parametres/
    intéressant Jean-Philippe André cet utilisation détournée d'une ligne de commande

    voir si j'ai bien compris

    on copie la ligne de commande dans une allocation mémoire
    et on en récupère les arguments avec les outils string tout simplement
    c'est bien ca ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #25
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 261
    Points
    34 261
    Par défaut
    En passant par GetCmd, oui, après c'est de la manipulation de chaîne de caractères
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #26
    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 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Salut.

    A la place de Workbook_Open, tu peux utiliser Auto_Open (à placer dans un module standard).

    - Workbook_Open s'exécute AVANT Auto_Open;
    - Auto_Open ne s'exécute pas si le classeur est ouvert par macro.
    "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. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    je me suis un peu amusé avec le clipboard

    classeur lanceur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim chemin$, mesparametres$, CSV_STRING$
    chemin = ThisWorkbook.Path & "\classeur2.xlsm"
    mesparametres = "toto,titi,tata,riri,fifi"
    Range("A1:C5").Copy
    With CreateObject("htmlfile")
    CSV_STRING = Replace(.parentwindow.clipboardData.GetData("Text"), vbTab, ";")'récup de la plage copiée en format text séparateur   ";"
    x = .parentwindow.clipboardData.clearData("Text")'vide le cliboard
    x = .parentwindow.clipboardData.setData("Text", mesparametres & vbCrLf & "," & CSV_STRING)'rempli le clipboard
    End With
     
    Workbooks.Open chemin'ouvre le classeur2
    End Sub
    classeur 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
      mesparametres = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")'récup de tout les parametre
    MsgBox mesparametres'affichage resultat
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #28
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    post #23

    en effet je dois préciser le besoin.

    A l'open d'un classeur j'ai un traitement qui prends un peu de temps, le classeur grossit et il a actuellement 2000 lignes, le traitement à l'open : renumérotaion, tri, ect...

    Mais ce classeur peut aussi être ouvert par d'autres classeurs pour juste l'ajout de lignes à la fin, sans besoin immédiat de renumérotation, de tri, ect.. puis fermé par l'appelant

    Aussi je me suis dit qu'il serait préférable dans ces cas d'ouvrir le classeur en occultant le traitement de "Private Sub Workbook_Open()"

    tout simplement
    Il ne savait pas que c'était impossible, donc il l' a fait...

  9. #29
    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 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    [...]

    Aussi je me suis dit qu'il serait préférable dans ces cas d'ouvrir le classeur en occultant le traitement de "Private Sub Workbook_Open()"[...]
    => auto_open

    J'en profite pour préciser que normalement, tu ne devrais pas avoir du code applicatif dans ton Workbook_Open ou dans ton Auto_Open. Ces procédures devraient se contenter d'appeler des procédures placées ailleurs, ce qui permettrait de moduler facilement ce que chacune doit réaliser (pour coller à ta demande initiale qui est de ne pas exécuter tout le Workbook_Open.

    Ainsi, tes procédures de tri ne devraient pas être dans le code de Workbook_Open, mais appelées par le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Workbook_Open()
      Tri1
      Tri2
      Tri3
    End Sub
    et ailleurs dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Tri1()
    ...
    ...
    End Sub
     
    Sub Tri2()
    ...
    ...
    End Sub
     
    Sub Tri3()
    ...
    ...
    End Sub
    Ainsi, si tu souhaites que Tri1 et Tri2 soient appelées quel que soit le mode d'ouverture, Tri3 ne devant être appelée que sur ouverture manuelle, tu auras:

    dans le Workbook_Open
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Workbook_Open()
      Tri1
      Tri2
    End Sub
    et dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Auto_Open()
      Tri3
    End Sub

    Si tu veux que rien se soit exécuté lors de l'ouverture par macro, il te suffit de mettre tous tes appels dans Auto_Open et de supprimer l'écoute de l'événement Workbook_Open en supprimant simplement la procédure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Auto_Open()
      Tri1
      Tri2
      Tri3
    End Sub
    "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. #30
    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 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Je mets ici deux fichiers: Launcher et Auto_Open

    Place-les dans un même dossier puis observe ce qui se passe:

    1. Ouvre Auto_Open.xslm => Tu verras que les trois tris sont réalisés dans l'ordre 1, 2, 3.

    2. Ferme Auto_Open, puis ouvre Launcher.xslm. Clique sur le bouton pour ouvrir Auto_Open.xlsm. Tu verras que seuls les tris 1 et 2 sont réalisés.


    => Les procédures qui ne doivent pas être exécutées lors d'une ouverture par macro doivent donc être appelées par Auto_Open. En cas d'ouverture manuelle, les procédures appelées par Auto_Open seront appelées après celles appelées par Workbook_Open.
    Fichiers attachés Fichiers attachés
    "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...
    ---------------

  11. #31
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    GRAND MERCI c'est très clair et j'ignorai cela, comme beaucoup surement, très instructif

    Je vais revoir ensuite mes classeurs pour tenir de ta remarque aussi (pas de code direct dans le code applicatif dans mes Workbook_Open)

    Une question :

    comment faire pour que tri1 et tri2 soient appelés à l'ouverture du fichier lorsque l'open est fait par une macro dans un classeur A et qu'aucun des 2 tris ne soient faits à l'ouverture du fichier lorsque l'open est fait par une macro dans un classeur B
    Il ne savait pas que c'était impossible, donc il l' a fait...

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour retraité

    comment faire pour que tri1 et tri2 soient appelés à l'ouverture du fichier lorsque l'open est fait par une macro dans un classeur A et qu'aucun des 2 tris ne soient faits à l'ouverture du fichier lorsque l'open est fait par une macro dans un classeur B

    on retombe dans ce qui a été dit avant a savoir :qu'il faut pointer d'une manière ou d'une autre dans le fichier auto_open le fichier qu'il la lancé

    dans ce cas là la solution du bath qui t'a été donné est toute indiquée ...ou... pointer sur la caption le nom du launcher comme je te l'ai indiqué



    moi aussi je l'ignorais complètement ce "sub auto_open "
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #33
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous,

    Hé salut Pierre, cela faisait longtemps...

    Je respecte bien entendu les propositions précédentes.
    Mon idée était la suivante et c'est celle que j'affecte à mes développements où je privilégie l'appel de procédure(s)

    Si dans le classeur appelé l'évènement Open est composé d'appels de procédure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
      Call lamacro1
      Call lamacro2
    End Sub
    Alors dans le classeur appelant, il peut être codé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Application.EnableEvents = False
    Workbooks.Open Filename:="leclasseur appelé"
    Application.Run "leclasseurappelé!la macro2"
    Application.EnableEvents = True
    A la syntaxe près (Voir la discussion que j'ai indiquée)

    A mon humble avis, c'est un processus facile à coder et d'une certaine souplesse.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  14. #34
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Par acquis de conscience j'ai testé la proposition de MarcelG du post #2, ça fonctionne comme prévu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Application.EnableEvents = False
        Workbooks.Open "D:\tmp\Classeur1.xlsm"
        Application.EnableEvents = True
    Workbook_Open() n'est pas exécuté.
    eric

  15. #35
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour marcel
    je rajoute a ton idée la condition que retraité souhaite

    dans le fichier qui est sensé être ouvert par les un et les autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    'plus rien dans le workbook_open
    Sub Auto_Open()
       MsgBox "ouvert tout seul"
    'lancer ici les sub qui doivent etre lancée quand il est ouvert manuellement(tout seul)
    End Sub
    Sub OpenByautherFich(argmt)
    MsgBox "ouvert par !!:" & argmt
    'lancer ici les sub qui doivent etre lancé en fonction du nom du classeur qui aété  injecté
    End Sub
     
    ' test autre macros ici
    et dans les launchers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
    Sub OpenTarget()
     Application.EnableEvents = False
    Workbooks.Open Filename:="C:\Users\polux\DeskTop\Auto_Open.xlsm"
    Application.Run "'Auto_Open.xlsm'!OpenByautherFich", ThisWorkbook.Name
    Application.EnableEvents = True
    End Sub
    le classeur qui a ouvert le auto_open est identifié dans le auto_open

    parti de la retraité tu a tout ce que tu voulais
    et effectivement plus de workbook_open comme a dit pierre

    pour info

    bien mettre les simple cotes ci dessous en rouge
    application.run "'nomduclasseur'! nomdelamacro",argument1,argument2,argument3,'etc........

    edit :
    suis je bête!!!! même plus besoins d'inhiber les events puisque plus de workbook_open et la sub auto-open ne se déclenche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub OpenTarget()
    Workbooks.Open Filename:="C:\Users\polux\DeskTop\Auto_Open.xlsm"
    Application.Run "'Auto_Open.xlsm'!OpenByautherFich", ThisWorkbook.Name
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #36
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    post#35
    c'est ok !! après pas mal de tentatives

    post#20
    je n'ai pas pu aller au bout, au dessus de mes connaissances..

    Merci à tous
    Il ne savait pas que c'était impossible, donc il l' a fait...

  17. #37
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    J'ai crié victoire un peu vite:

    voilà l'auto_open du classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Explicit
    Sub Auto_Open()
       MsgBox "ouvert tout seul"
    End Sub
    tout va bien

    voilà l'ouverture par un autre classeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub OpenSF()
    MsgBox "ouvert par autre classeur"
    End sub
    mais je n'arrive pas jusque là, dans le lanceur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
     
    Dim pathSF As String
     
    pathSF = "K:\ES-SIG\SF.xlsm"
     
    Workbooks.Open Filename:=pathSF
    Application.Run "'SF.xlsm'!OpenSF", ThisWorkbook.Name
     
    End Sub
    sur Application.autorun j'ai :
    erreur '450' nombre d'arguments incorrect ou affectation de priorité incorrecte
    le lanceur est sur C: et le fichier à ouvrir sur K:

    je ne saisi pas le système passage et récupération de l'argument
    Il ne savait pas que c'était impossible, donc il l' a fait...

  18. #38
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2015
    Messages : 29
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    post #23

    en effet je dois préciser le besoin.

    A l'open d'un classeur j'ai un traitement qui prends un peu de temps, le classeur grossit et il a actuellement 2000 lignes, le traitement à l'open : renumérotaion, tri, ect...

    Mais ce classeur peut aussi être ouvert par d'autres classeurs pour juste l'ajout de lignes à la fin, sans besoin immédiat de renumérotation, de tri, ect.. puis fermé par l'appelant

    Aussi je me suis dit qu'il serait préférable dans ces cas d'ouvrir le classeur en occultant le traitement de "Private Sub Workbook_Open()"

    tout simplement
    Combien de classeurs ouvrent le classeur cible et pour faire le traitement qui prends du temps ? Est-ce que c'est seulemnt un classeur ?

  19. #39
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Bonjour,

    j'ai 5 classeurs qui sont susceptibles d'ouvrir le classeur cible
    Il ne savait pas que c'était impossible, donc il l' a fait...

  20. #40
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    je vais regarder j'ai un disk "K" justement

    aben non pas la peine !!!!!!!!!!!!!!!!!

    ET L'ARGUMENT ENTRE PARENTESES DANS LA SUB OPENSF ALORS TU L'A MANGE !!!!!!!!!!!!!

    ma fois stu lance une sub avec argument faut il encore que celle si en ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     sub openSF(ARGUMENT)
    '.....
    end sub


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub OpenSF(argument as string )
    MsgBox "ouvert par autre classeur par " &  argument 
    End sub
    le lanceur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub je_lance() 
    Dim pathSF As String
     
    pathSF = "K:\ES-SIG\SF.xlsm"
     
    Workbooks.Open Filename:=pathSF
    Application.Run "'SF.xlsm'!OpenSF", ThisWorkbook.Name
     
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. replace() sur toutes les variables d'une Private Sub
    Par wulfram dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/08/2016, 15h48
  2. [XL-2007] Listview et auto exécution private sub lorsque changement de ligne
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/01/2016, 20h23
  3. VBS ne pas exécuter le Workbook_Open()
    Par GuiJenn34 dans le forum VBScript
    Réponses: 1
    Dernier message: 25/09/2015, 09h01
  4. Réponses: 3
    Dernier message: 30/03/2015, 11h48
  5. [XL-2010] Supprimer une ligne précise dans Thisworkbook Private Sub Workbook_Open
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 24/04/2012, 19h31

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