• Initiateur de la discussion Initiateur de la discussion Charly88
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Charly88

XLDnaute Occasionnel
Bonjour, à tous, et oui c'est lundi matin, ça babille de partout et parfois on aurait bien envie de silence tant la machine est difficile à mettre en route.
Dans mon cas c'est une USF que je n'arrive pas à fermer :
Code:
For i = 1 To Sheets.Count 'vérification de la non-existence de la feuille
    If Sheets(i).Name = feuillesource Then y = 1
Next i

If y = 0 Then
    MsgBox "La feuille de base indiquée en paramètre n'existe pas."
    Sheets("Paramétrage").Select
    Range("B6").Select
    Unload Carma '<<<=== c'est là que se pose le problème
    Exit Sub  '<<<===
End If

Mon code est dans la youseurforme, tel qu'il est écrit, j'ai une erreur 91, Object variable or With block variable not set... Ce qui n'est pas totalement illogique, je viens de fermer le réceptacle de la macro.

Si j'intervertis l'unload et le exit, j'ai cette grosse patate de yourseurforme vide qui reste plantée en plein milieu du chemin.

Enfin si j'enlève le exit, le code continue... ce qui du coup me laisse sceptique sur le non-fonctionnement de la première formulation.
... Des suggestions ?
 
Re : Mais ferme-la !

Bonjour

essaies peut-être du style

Code:
If y = 0 Then
    MsgBox "La feuille de base indiquée en paramètre n'existe pas."
    Sheets("Paramétrage").Select
    Range("B6").Select
    Unload Carma '<<<=== c'est là que se pose le problème
Else
    La suite de ton code
End If
 
Re : Mais ferme-la !

Vraiment je ne vois pas ce qui peut clocher, à moins que ce soit le fait que ce soit en initialize ?


Code:
Private Sub UserForm_Initialize()

Dim RemiseZ
If Sheets("Paramétrage").Cells(2, 6).Value = "D" Then
    RemiseZ = MsgBox("Le compteur de graphes est à " & Sheets("Paramétrage").Range("F1").Value & ", voulez-vous le réinitialiser ?", vbYesNo)
    If RemiseZ = vbYes Then Sheets("Paramétrage").Range("F1").Value = 1
    Sheets("Paramétrage").Cells(2, 6).Value = "F"
End If

Dim Feuillesource As String
Dim BasE As String
Dim PrimLigne As Integer
Dim PrimCol As Integer
Dim EcartVTabs As Integer
Dim EcartHTabs As Integer


Label5.Caption = Sheets("Paramétrage").Range("B8").Value
Label1.Caption = Sheets("Paramétrage").Range("B9").Value
Label6.Caption = Sheets("Paramétrage").Range("B10").Value
Label4.Caption = Sheets("Paramétrage").Range("B12").Value
Label3.Caption = Sheets("Paramétrage").Range("B13").Value
Label2.Caption = Sheets("Paramétrage").Range("B14").Value

Feuillesource = Sheets("Paramétrage").Range("B6").Value


For i = 1 To Sheets.Count 'vérification de la non-existence de la feuille
    If Sheets(i).Name = Feuillesource Then y = 1
Next i

If y = 0 Then
    MsgBox "La feuille de base indiquée en paramètre n'existe pas."
    Sheets("Paramétrage").Select
    Range("B6").Select
    Unload Carma    
Else


    PrimLigne = Sheets("Paramétrage").Range("F6").Value
    PrimCol = Sheets("Paramétrage").Range("F7").Value
    EcartVTabs = Sheets("Paramétrage").Range("F8").Value
    EcartHTabs = Sheets("Paramétrage").Range("F9").Value
    
    
    
    'Base et base de compa
    i = Sheets("Paramétrage").Range("A20").End(xlDown).Row
    BaseDepList.RowSource = "Paramétrage!A20:A" & i
    BasesCompaList.RowSource = "Paramétrage!A20:A" & i
    
    'Cycle de base
    i = Sheets("Paramétrage").Range("B20").End(xlDown).Row
    CycleDepList.RowSource = "Paramétrage!B20:B" & i
    
    'Cycle de compa
    i = Sheets("Paramétrage").Range("B20").End(xlDown).Row
    CycleCompaList.RowSource = "Paramétrage!B20:B" & i
    
    'Perio
    i = Sheets("Paramétrage").Range("C20").End(xlDown).Row
    Perio.RowSource = "Paramétrage!C20:C" & i
    
    'Légende
    i = Sheets("Paramétrage").Range("D20").End(xlDown).Row
    LégendeList.RowSource = "Paramétrage!D20:D" & i
    
       
    'Sujet
    i = Sheets(Feuillesource).Cells(PrimLigne, PrimCol).End(xlDown).Row
    For j = PrimLigne + 1 To i
    Sujets.AddItem Sheets(Feuillesource).Cells(j, PrimCol).Value
    Next j
    
    Sheets(Feuillesource).Select
    Cells(j, PrimCol).Select
    
    'Caté
    i = Sheets(Feuillesource).Cells(PrimLigne, PrimCol).End(xlToRight).Column
    For j = PrimCol + 1 To i
    Catés.AddItem Sheets(Feuillesource).Cells(PrimLigne, j).Value
    Next j
    
    
    
    BaseDepList.ListIndex = -1
    CycleDepList.ListIndex = -1
    Perio.ListIndex = -1
    Sujets.ListIndex = -1
    Catés.ListIndex = -1
    

End If

End Sub
 
Re : Mais ferme-la !

Bonjour,
Peut-être comme ceci
Code:
....'Ton code
    Dim Ws As Worksheet
    On Error Resume Next
    Set Ws = ThisWorkbook.Sheets(feuillesource)
    If Ws Is Nothing Then
    MsgBox "La feuille de base indiquée en paramètre n'existe pas."
    Sheets("Paramétrage").Range("B6").Select
    Else
    ....'ton code
    End If
    Unload Carma
    
End Sub
A+
kjin
 
Re : Mais ferme-la !

Re

Donc en réflechissant il faudrait plus tôt faire un truc du genre dans un module

Code:
For i = 1 To Sheets.Count 'vérification de la non-existence de la feuille
    If Sheets(i).Name = Feuillesource Then y = 1
Next i

If y = 1 Then Carma.show
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
703
Retour