XL 2013 Merci Dranreb adapter code de Dranreb"RESOLU

grisan29

XLDnaute Accro
bonjour a tous et toutes
dans le post de BrunoM_45 ou il y a Dranreb qui as proposer un code , je voudrais savoir comment
modifier cette ligne
Code:
CL.Plage Workbooks("BdD Villes.xlsx").Worksheets("Liste").[A2:B2]
afin d'aller chercher sur c : base\ le classeur ("BdD Villes.xlsx")
j'ai réussi avec le classeur de BrunoM_45 mais comme mon classeur côtoie les modules de classes de l'excellent Dranreb je voudrais modifier le code actuel pour le faire
mais en gardant la combobox du code postal comme il est afin d'avoir les communes qui ont le même code postal dans l'autre combobox
Code:
Private Sub UserForm_Initialize()
    validated = False
    Caption = " Adresse du chantier"
    Set CBL = New ComboBoxLiés
    CBL.Plage Range("CODE_POSTAL_CEL1")
    CBL.Add Me.CB_CodePostal, "B"
    CBL.Add Me.CB_Ville, "C"
    CBL.Actualiser
End Sub
Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Je dirais :
VB:
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks("BdD Villes.xlsx")
If Err Then Set WBk = Workbooks.Open("C:\…\BdD Villes.xlsx")
On Error GoTo 0
CL.Plage Wbk.Worksheets("Liste").[A2:B2]
À tester…
 

grisan29

XLDnaute Accro
bonjour Dranreb
merci de ta réponse qui me sempble etre ce qu'il faut mais je voudrais que tu me dise si j'ai bien intégré ton code
Code:
Private Sub UserForm_Initialize()
Dim Wbk As Workbook
    validated = False
    Caption = " Adresse du chantier"
    Set CBL = New ComboBoxLiés
 
On Error Resume Next
Set Wbk = Workbooks("BdD Villes.xlsx")
If Err Then Set Wbk = Workbooks.Open("C:\base\BdD Villes.xlsx")
On Error GoTo 0
    CBL.Plage Wbk.Worksheets("Liste").[A2:B2]
   ' CBL.Plage Range("CODE_POSTAL_CEL1")
    CBL.Add Me.CB_CodePostal, "B"
    CBL.Add Me.CB_Ville, "C"
    CBL.Actualiser


'CL.Actualiser
End Sub
 

Dranreb

XLDnaute Barbatruc
Oui ça me semble correct.
Voir si on ne pourrait pas l'améliorer de détails, tels que Application.ScreenUpdating = False avant l'Open et éventuellement ThisWorkbook.Activate après pour que l'ouverture ne se voie pas.
 

grisan29

XLDnaute Accro
bonsoir
j'ai rajouter Application.ScreenUpdating = False avant l'Open et en fin de code aussi mais avec = true
j'ai essayer aussi ThisWorkbook.Activate mais l'ouverture se voie
mais faire en sorte que les codes postales et villes "soient dynamiques" a l'ouverture de l'userform
ou lues classeur fermés
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Je suis étonné. Normalement une ouverture de classeur ne se voie pas après Application.ScreenUpdating = False, à moins que le classeur ouvert demeure le classeur actif après fin d'exécution ou après Application.ScreenUpdating = True.
Pour être sûr qu'il ne se voit pas, la liste des communes pourrait aussi être enregistrée en xlam.
 

grisan29

XLDnaute Accro
bonsoir
le classeur liste BdD Villes est un classeur .xlsx et quand il s'ouvre il se met devant
c'est un classeur créer pour l'essai mais qui peu devenir le bon
 

Dranreb

XLDnaute Barbatruc
Mais sous Application.ScreenUpdating = False, si vous l'ouvrez et ensuite vous réactivez le classeur qui était actif avant de l'ouvrir, rien ne devrait laisser deviner qu'il a été ouvert.
 

grisan29

XLDnaute Accro
bonsoir
voici comment est le code
Code:
Private Sub UserForm_Initialize()
Dim Wbk As Workbook
    validated = False
    Caption = " Adresse du chantier"
    Set CBL = New ComboBoxLiés
   Application.ScreenUpdating = False
On Error Resume Next
Set Wbk = Workbooks("BdD Villes.xlsx")
If Err Then Set Wbk = Workbooks.Open("C:\Facturation\base\BdD Villes.xlsx")
On Error GoTo 0
    CBL.Plage Wbk.Worksheets("Liste").[A2:B2]
   'ThisWorkbook.Activate 
    CBL.Add Me.CB_CodePostal, "B"
    CBL.Add Me.CB_Ville, "C"
    CBL.Actualiser
Application.ScreenUpdating = True
'CL.Actualiser
End Sub
 

Dranreb

XLDnaute Barbatruc
Oui ben ajoutez
: ThisWorkbook.Activate juste derrière Set Wbk = Workbooks.Open("C:\Facturation\base\BdD Villes.xlsx")
 

grisan29

XLDnaute Accro
bonsoir
le classeur reste en arrière comme cela, mais il faudrait qu'il se ferme avec l'userform
j'ai rajouter ceci et le classeur se ferme (trouvé avec l'enregistreur)
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Windows("BdD Villes.xlsx").Close
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui, bien sûr.
Personnellement j'aurais sans doute préféré déclarer Private Wbk As Workbook seulement au début, avant toute procédure, pour n'avoir plus qu'à faire Wbk.Close dans l'UserForm_QueryClose
Sous certaines condition le fichier pourrait peut être même être fermé, tout au contraire, juste après CBL.Actualiser. Ça impliquerait seulement de ne jamais refaire de CBL.Actualiser, ni tenter d'accéder à CBL.PlgTablo. Ça semble être le cas de votre besoin. Je mets la suggestion au conditionnel parce que je ne l'ai jamais tenté et que ce n'est pas compatible avec les besoins les plus fréquents.
Je viens de relire la programmation de mon ComboBoxLiées et je peux confirmer que la gestion des choix et la constitution des listes filtrées pour les différentes ComboBox ne requiert plus aucune consultation de PlgTablo: tout est fait d'après les CBM.SujetBdD, lesquels ne sont fixés que lors du Actualiser.
 

grisan29

XLDnaute Accro
bonjour Dranreb
je n'ai pas ta nouvelle version des cbxlies je viens de mettre la ligne du query close entre
cblactualiser et application.ScreenUpdating = True comme ceci
Code:
Private Sub UserForm_Initialize()
    Dim Wbk As Workbook
    validated = False
    Caption = " Adresse du chantier"
    Set CBL = New ComboBoxLiés
    Application.ScreenUpdating = False
    On Error Resume Next
    Set Wbk = Workbooks("BdD Villes.xlsx")
    If Err Then Set Wbk = Workbooks.Open("C:\Facturation\base\BdD Villes.xlsx"): ThisWorkbook.Activate
    On Error GoTo 0
    CBL.Plage Wbk.Worksheets("Liste").[A2:B2]
    'ThisWorkbook.Activate
    CBL.Add Me.CB_CodePostal, "B"
    CBL.Add Me.CB_Ville, "C"
    CBL.Actualiser
    Windows("BdD Villes.xlsx").Close
    Application.ScreenUpdating = True

End Sub
et ça fonctionne le classeur n'apparait pas et tout fonctionne
 

Discussions similaires


Haut Bas