passer outre si le classeur n'est pas ouvert (dur a expliquer)

grisan29

XLDnaute Accro
bonjour a tous et toutes en ce 14 juillet

dans mon fichier de facturation quand j'ouvre l'userform "bibliothèque" a son initialisation il va ouvrir le classeur articles qui est sous C: par ce bout de code
Code:
Private Sub UserForm_Initialize()
    
    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 si je ferme l'userform "bibliothèques parce que j'ai oublier de modifier un articles ou autre je suis obliger de fermer le classeur articles en le sauvant via le message d'excel, mais si j'oublie de fermer le classeur et je veux ouvrir l'userform"bibliothèque j'ai un bug car le classeur articles es déja ouvert

j'ai essayer des choses comme cela mais pas concluant du tout
Code:
Workbooks("articles.xlsm").SaveChanges = True
Workbooks("articles.xlsm").Close = True
avec des if then rien a faire

si vous me comprenez dans ce charabia :rolleyes:

Pascal
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : passer outre si le classeur n'est pas ouvert (dur a expliquer)

Bonjour grisan29
,

Je ne comprends pas le soucis dans la mesure où en début de Private Sub UserForm_Initialize() on teste si le fichier WB_BASE_ARTICLES(a priori variable globale contenant chemin et nom de fichier) est ouvert .
s'il est ouvert, wbArticles est initialisé.


Puis si wbArticles n'est pas initialisé (donc classeur WB_BASE_ARTICLES non ouvert) on ouvre ce classeur, il ne peut donc pas y avoir de bug sur l'ouverture d'un classeur qui serait déjà ouvert.

Est ce que la variable WB_BASE_ARTICLES est initialisée de manière identique lors du deuxième lancement de l'USF ? si non cela pourrait expliquer le bug.

A+
 

grisan29

XLDnaute Accro
Re : passer outre si le classeur n'est pas ouvert (dur a expliquer)

bonjour paf
merci de ta réponse
Est ce que la variable WB_BASE_ARTICLES est initialisée de manière identique lors du deuxième lancement de l'USF ? si non cela pourrait expliquer le bug.

oui a chaque fois le classeur est ouvert s'il ne l'est pas et il n'y a pas de soucis si aucune modification n'a été faite

Pascal
 

grisan29

XLDnaute Accro
Re : passer outre si le classeur n'est pas ouvert (dur a expliquer)

bonjour Paf
je viens d'essayer ceci qui fonctionne en fermant le classeur et le rouvrant dans la foulé du coup en même temps que l'userform
Code:
Private Sub UserForm_Initialize()

    On Error Resume Next
    Workbooks("Articles.xlsm").save
        Workbooks("Articles.xlsm").Close
        
    Dim wbArticles As Workbook

ce sont les 3 lignes du milieu que j'ai rajouter, peut etre pas ce qu'il faut, mais cela fonctionne, s'il y a mieux, j'attends pour clore le post
Pascal
 

grisan29

XLDnaute Accro
Re : passer outre si le classeur n'est pas ouvert (dur a expliquer)

bonsoir dranreb :cool::cool::cool:

en effet ça te rappelle quelque chose :) car tu as bien compris ma demande et je t'en remercie, ça fonctionne très bien et même mieux car plus souple pas besoin de fermer et rouvrir

merci :cool::cool::cool:
je peux clore sans risque avec une réponse professionnelle

Pascal
 

Discussions similaires

Statistiques des forums

Discussions
312 371
Messages
2 087 704
Membres
103 646
dernier inscrit
ouattara dad