Ouvrir un classeur sous condition

Résolu
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 29 sept. 2014 à 08:16
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 29 sept. 2014 à 13:47
Bonjour le forum,

Donc je reviens pour une question, j'ai un classeur (sources) se nommant RapHebdo, de ce classeur, existe la possibilité de faire un "Bilan", seul problème, si l'utilisateur clique sur "Faire le bilan" alors qu'il n'existe aucun rapport, je vous laisse deviner la suite :-), ça bug...

Je vous poste le code qui génère le rapport :

Sub bilan(control As IRibbonControl)

'Ici je déclare mes variables
Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh As Worksheet
Dim Nom_Feuille As String
Dim total As String
Dim hzc As String
Dim trpen As String
Dim nuit As String
Dim rep As String
Dim ClasseurPath As String
Dim sem As String
Dim section As String
Dim l As Integer

rep = Environ("USERPROFILE") & ""
ClasseurPath = rep & "\Documents\POINTAGES\bilanHebdo.xlsm"


Set wk1 = ThisWorkbook
l = 2
'ouverture du classeur
Set wk2 = Workbooks.Open(ClasseurPath)
For Each sh In wk1.Worksheets
If sh.Name <> "MATRICE" And sh.Name <> "VIERGE" Then
'ton code
Nom_Feuille = sh.Name
'Copie des noms des feuilles dans une colonne
wk2.Sheets(1).Cells(l, 1).Value = Nom_Feuille
'Copie de la semaine dans une colonne
sem = sh.Range("AZ8").Value
wk2.Sheets(1).Cells(l, 2).Value = sem
'Copie de la section dans une colonne
section = sh.Range("Z11").Value
wk2.Sheets(1).Cells(l, 3).Value = section
'copie des nombres totales d'heure de chantiers
total = sh.Range("CW18").Value
wk2.Sheets(1).Cells(l, 4).Value = total
'copie des nombres totales d'heures en ZC
hzc = sh.Range("CW21").Value
wk2.Sheets(1).Cells(l, 5).Value = hzc
'copie des nombres totales de travaux pénibles
trpen = sh.Range("CW23").Value
wk2.Sheets(1).Cells(l, 6).Value = trpen
'copie des nombres totales d'heure de nuits
nuit = sh.Range("CW25").Value
wk2.Sheets(1).Cells(l, 7).Value = nuit
l = l + 1
Else

sh.Visible = xlSheetHidden ' ou xlSheetVeryHidden
End If
Next

'Fermeture du second classeur
'wk2.Close

End Sub

Merci à tous pour votre aide

bonne journée,

Christian

--

6 réponses

cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
29 sept. 2014 à 08:18
J'oubliais, la ligne pointée pour l'erreur est celle-ci :

sh.Visible = xlSheetHidden  ' ou xlSheetVeryHidden
End If

Merci
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
29 sept. 2014 à 09:21
Bonjour,

Pour la question:

seul problème, si l'utilisateur clique sur "Faire le bilan" alors qu'il n'existe aucun rapport, je vous laisse deviner la suite :-), ça bug...


C'est simple mettre:

If  ClasseurPath = "" Then Exit Sub

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
29 sept. 2014 à 10:03
Bonjour,

+1 pour la réponse de pivert.


Par contre :

si l'utilisateur clique sur "Faire le bilan" alors qu'il n'existe aucun rapport, je vous laisse deviner la suite :-), ça bug...
Ca bug... certe... mais tu as un message d'erreur.... et il serait bien de nous le donner !

J'oubliais, la ligne pointée pour l'erreur est celle-ci :
sh.Visible = xlSheetHidden

..Ce qui ne semble pas être en rapport avec la réponse de Pivert....

Ces feuilles sont déjà masquées non ? voir même sont en xlSheetVeryHidden si ça se trouve....
il faudrait commencer par, le temps de tests du moins, ajouter quelques debug.print sur certaines variables afin de comprendre d'où vient exactement le souci....

Et puis... avant de la masquer.. s'assurer qu'elle est visible :
  if sh.Visible = True Then...


    Else
       debug.print "Nom de la feuille : " & sh.Name        
       debug.print "Visibilité de la feuille : " & sh.Visible 
        if sh.Visible = True then   sh.Visible = xlSheetHidden  ' ou xlSheetVeryHidden
    End If


Et bien sûr.. tester ton code en mode pas à pas serait un plus pour comprendre d'où vient le souci....



0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
29 sept. 2014 à 11:03
J'ai répondu un peu vite, si le fichier n'existe pas, mais qu'il y a un chemin il faut faire ceci:

Option Explicit
Dim ClasseurPath As String
Dim verifier As Boolean
Private Sub CommandButton1_Click()
  ClasseurPath = rep & "\Documents\POINTAGES\bilanHebdo.xlsm"
 verifier = ExisteFichier(ClasseurPath)
If verifier = False Then Exit Sub
Workbooks.Open (ClasseurPath)
End Sub
Public Function ExisteFichier(S As String) As Boolean
 Dim fichier As Object
     Set fichier = CreateObject("Scripting.FileSystemObject")
     ExisteFichier = fichier.FileExists(S)
 End Function

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 29/09/2014 à 11:03
Bonjour,
ce qui, au bout du compte, semble être ceci :
 Private Sub CommandButton2_Click()
For Each sh In wk1.Worksheets
Select Case sh.Name
Case "MATRICE", "VIERGE"
sh.Visible = True
Case Else
sh.Visible = False
End Select
Next
End Sub

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
29 sept. 2014 à 13:47
Bonjour tout le monde,

J'ai du oublier quelques précision: (comme d'hab)

Donc le fichier bilanHebdo est existant, et se trouve dans le dossier "mes documents" (comme RapHebdo)

RapHebdo et bilanHebdo sont 2 fichiers bien distint

En fait, le but est que si il n'y a pas de rapport fait, alors si l'intervenant clique sur faire le bilan, un message dise "veuillez faire au moins un rapport"...

Désolé pour mon manque de détailles.... encore...lol

MAis déjà, je pense qu'avec ce que vous m'avez fourni je devrais pouvoir me dépatouiller...

Encore merci

--
0
Rejoignez-nous