Fermer un classeur en le sauvant mais bug

Résolu
grisan29 Messages postés 21 Statut Membre -  
Frenchie83 Messages postés 2254 Statut Membre -
Bonjour, a tous

j'ai ce code Workbooks("articles.xlsm").SaveClose True
qui me permet de fermer en sauvant le classeur articles qui ouvert

ce que je voudrais exactement c'est qu' une fois que j'ai fait la modification nécessaire que le clic pour ouvrir l'userform des articles justement le ferme en le sauvant
Private Sub bibliothèques_Click()
Workbooks("articles.xlsm").saveClose True
Unload Me

bibliothèque.Show
End Sub
voila comment j'ai mis la ligne qui ferme en sauvant le classeur mais cette même ligne bug pour ouvrir la bibliothèque qui elle en s'initialisant ouvre le classeur articles

bon j'espère être clair dans mon explication
Pascal
--

7 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    Essayez ceci
    Workbooks("articles.xlsm").Save
    Workbooks("articles.xlsm").Close
    
    Cdlt
    0
  2. grisan29 Messages postés 21 Statut Membre 1
     
    bonjour frenchie83

    merci pour ta réponse, mais je me suis mal exprimer dans ce que je voudrais
    en premier quand j'ouvre mon classeur facturation le classeur articles n'est pas ouvert, quand je clic sur son bouton il s'ouvre très bien mais si je dois lui faire une modification je suis obligé de le fermer et excel me demande a chaque fois si je veux enregistrer ou pas je clic sur oui
    et dans ce cas je clic de nouveau sur le bouton et le classeur s'ouvre

    je voudrais passer outre le message de excel en faisant la manipulation dans le bouton qui lance l'ouverture du classeur en même temps que l'usf bibliothèques

    Pascal

    --
    0
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
      Dans votre demande initiale: ce que je voudrais exactement c'est qu' une fois que j'ai fait la modification nécessaire que le clic pour ouvrir l'userform des articles justement le ferme en le sauvant et voila comment j'ai mis la ligne qui ferme en sauvant le classeur mais cette même ligne bug C'est bien ce qui était écrit.

      Pour le reste, je ne suis pas sûr d'avoir bien compris.
      voudrais passer outre le message de excel Si ce n'est qu'une histoire de message qu'il ne faut pas afficher, il suffit de rajouter cette ligne en début de code.
      Application.DisplayAlerts = False

      Mais, ce n'est peut-être pas encore ça, mais sans voir vos fichiers et les codes qui leurs sont associés, difficile d'en dire plus. Dites vous bien que nous travaillons que d'après ce que vous écrivez, donc si vous ne mettez pas les fichiers en pièces jointes, soyez clair et précis dans vos demandes.
      Cdlt
      0
  3. grisan29 Messages postés 21 Statut Membre 1
     
    re frenchie
    la fonction que tu donnes ne correspond a ce que je veux
    donc avant que je décide de changer le code du bouton est
    Private Sub bibliothèques_Click()
    Unload Me
    bibliothèque.Show
    End Sub
    et a l'initialisation de la bibliothèques le classeur articles s'ouvre, mais si en cours je m'aperçois qu'il faut que je rajoute où modifie un article je ferme l'usf bibliothèque et je fait ma modification, mais il m'arrive parfois d'oublier de sauvegarder le classeur article et la j'ai un bug car je n'ai pas fermé le classeur articles, au début du code l'userform articles il y a l'appel du classeur article par lemorceau de code ci dessous
    Dim wbArticles As Workbook

    Dim wb As Workbook
    For Each wb In Workbooks
    If wb.FullName = WB_BASE_ARTICLES Then
    Set wbArticles = wb
    Exit For
    End If
    Next wb

    Set wsFacture = ThisWorkbook.Sheets(WS_FACTURE)

    wsFacture.Range("chiflet").ClearContents
    If wbArticles Is Nothing Then
    Set wbArticles = Workbooks.Open(WB_BASE_ARTICLES)
    End If

    Set wsArticles = wbArticles.Sheets(WS_ARTICLES) 'Set pour attribuer des références d'objet à des variables

    ThisWorkbook.Activate

    mais en te répondant je pense que c'est peut être la qu'il faut agir

    en fait les lignes de codes proposé a ta 1ère répone vont bien si le classeur est déja ouvert, mais a l'ouverture du classeur principal il ne l'est pas

    Pascal

    --
    0
  4. grisan29 Messages postés 21 Statut Membre 1
     
    re frenchie83
    j'ai essayer ceci
    If Workbooks("articles.xlsm").Open = True Then
    Worksheets("articles.xlsm").save.Close = True
    End If
    mais j'ai un bug a la 2ème ligne erreur 9 l'indice n'appartient pas a la sélection

    Pascal

    --
    0
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
              Workbooks("TEST-CCM.xlsm").Save
              Workbooks("TEST-CCM.xlsm").Close
      
      0
    2. Frenchie83 Messages postés 2254 Statut Membre 339
       
              Workbooks("TEST-CCM.xlsm").Save
              Workbooks("TEST-CCM.xlsm").Close
      
      0
    3. Frenchie83 Messages postés 2254 Statut Membre 339
       
      Mauvaise manipulation de ma part, c'est partit avant d'avoir fini mon texte
      dans la 2ème ligne c'est workbooks au lieu de worksheets
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. grisan29 Messages postés 21 Statut Membre 1
     
    re frenchie 83

    merci de ta réponse mais j'ai le meme bug car le classeur articles n'est ouvert quand j'ouvre le classeur facturation
    il faudrais passer outre quand c'est facturation seul qui est ouvert pour le faire après

    Pascal

    --
    0
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
      et en mettant
      on error resume next en début de code
      0
  7. grisan29 Messages postés 21 Statut Membre 1
     
    re franchie 83
    avec cette en plus cela fonctionne

    merci beaucoup
    Pascal

    --
    0
  8. grisan29 Messages postés 21 Statut Membre 1
     
    bonsoir franchie83

    tout compte fait j'ai trouvé autre chose que fermer et rouvrir le classeur et qui fonctionne bien
    j'ai remplacer une ligne dans l'initialisation de l'userform bibliothèques
    la ligne cochée en haut est celle remplacée
    'If wb.FullName = WB_BASE_ARTICLES Then
    If UCase(wb.FullName) = UCase(WB_BASE_ARTICLES) Then

    voila je voulais t'en faire part

    Pascal

    --
    0
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
      Bonjour
      merci pour le retour cliquez sur "résolu"
      bonne journée
      0