Ouverture d'un classeur excel Macro VBA
Résolu/Fermé
A voir également:
- Ouverture d'un classeur excel Macro VBA
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Trier un tableau excel - Guide
8 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
Modifié par eriiic le 24/04/2012 à 20:36
Modifié par eriiic le 24/04/2012 à 20:36
Bonjour,
tu peux utiliser Dir() :
eric
tu peux utiliser Dir() :
If Dir("C:\toto.xls") = "" Then MsgBox "le fichier est introuvable!"
eric
Alors je n'ai pas testé ton code pour la simple et bonne raison que le mien ne fonctionne pas à la base, je l'ai mal testé.
Cela concerne une autre partie du code :
Sub Workbook_Open()
Sheets("Chargement").Select
'Démarre à la date du jour -1
Range("A2") = CDate(Format(Date - 1, "dd mm yyyy"))
Range("A3") = CDate(Format(Date - 1, "dd mm yyyy"))
'Recule de 3 jours si date = Lundi
If Range("A2") = dimanche Then
Range("A3") = CDate(Format(Date - 3, "dd mm yyyy"))
Range("A2") = CDate(Format(Date - 3, "dd mm yyyy"))
End If
Acceuil.Show
End Sub
L'objectif est, dès l'ouverture d'excel, initialisé la date du jour - 1 dans A2 (ou A2= Lundi, Mardi, ect et ou A3 = 17 04 2012, 18 04 2012, ect...). Puisque ces mêmes critères me permettent ensuite d'utilisé le code que j'ai transmis plus haut pour ouvrir le fichier.
Le format "DDDD" ne fonctionne pas pour A2 mais aucune importance car j'ai paramétré la cellule dans excel et il m'affiche : lundi, mardi, mercredi, ect...
Le problème est que soit il m'affiche Date - 1 mais pas Date - 3 si on est Lundi, ou inversement, il ne m'affiche que Date - 3 quelque soit le jour de la semaine
En gros, soit le if ne fonctionne pas, soit il prend le dessus sur la première déclaration de Date - 1.
Je ne sais pas si il y a une influence (je ne pense pas) mais j'ai intitulé A2 en "Jour" et A3 en "jour1".
Merci de ton aide eriiic
Cela concerne une autre partie du code :
Sub Workbook_Open()
Sheets("Chargement").Select
'Démarre à la date du jour -1
Range("A2") = CDate(Format(Date - 1, "dd mm yyyy"))
Range("A3") = CDate(Format(Date - 1, "dd mm yyyy"))
'Recule de 3 jours si date = Lundi
If Range("A2") = dimanche Then
Range("A3") = CDate(Format(Date - 3, "dd mm yyyy"))
Range("A2") = CDate(Format(Date - 3, "dd mm yyyy"))
End If
Acceuil.Show
End Sub
L'objectif est, dès l'ouverture d'excel, initialisé la date du jour - 1 dans A2 (ou A2= Lundi, Mardi, ect et ou A3 = 17 04 2012, 18 04 2012, ect...). Puisque ces mêmes critères me permettent ensuite d'utilisé le code que j'ai transmis plus haut pour ouvrir le fichier.
Le format "DDDD" ne fonctionne pas pour A2 mais aucune importance car j'ai paramétré la cellule dans excel et il m'affiche : lundi, mardi, mercredi, ect...
Le problème est que soit il m'affiche Date - 1 mais pas Date - 3 si on est Lundi, ou inversement, il ne m'affiche que Date - 3 quelque soit le jour de la semaine
En gros, soit le if ne fonctionne pas, soit il prend le dessus sur la première déclaration de Date - 1.
Je ne sais pas si il y a une influence (je ne pense pas) mais j'ai intitulé A2 en "Jour" et A3 en "jour1".
Merci de ton aide eriiic
J'ai quand meme essayé ta formule, et ca ne fonctionne pas, si il ne trouve pas de fichier il me revoit à ma fonction VBA suivante :
With Sheets("Chargement")
Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xls")
If Dir("C:\" & Format([Date - 3].Value, "dd mm yyyy") & ".xls") = "" Then MsgBox "le fichier est introuvable!"
With Sheets("Chargement")
Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xls")
If Dir("C:\" & Format([Date - 3].Value, "dd mm yyyy") & ".xls") = "" Then MsgBox "le fichier est introuvable!"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
25 avril 2012 à 11:50
25 avril 2012 à 11:50
Bonjour,
Ce n'est pas parce que tu changes le format d'affichage que tu changes la valeur.
Dans A2 tu as toujours une date..
eric
Ce n'est pas parce que tu changes le format d'affichage que tu changes la valeur.
Dans A2 tu as toujours une date..
If Weekday(Range("A2"), vbMonday) = 7 Then
eric
Raahh j'avais tenté la fonction weekday mais en écrivant sunday au lieu de monday... Merci bien...ça fonctionne, j'ai rajouté un elseif pour le positionnement du samedi du coup :)
Finalement tu as autre une idée pour mon premier soucis de fichier non trouvé?
Finalement tu as autre une idée pour mon premier soucis de fichier non trouvé?
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
25 avril 2012 à 12:46
25 avril 2012 à 12:46
Ben non puisqu'elle est simple et marche très bien.
Fais le test d'existence avant d'essayer de l'ouvrir.
eric
Fais le test d'existence avant d'essayer de l'ouvrir.
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
25 avril 2012 à 14:01
25 avril 2012 à 14:01
imbrique tes if correctement.
Par exemple :
eric
Par exemple :
If Weekday(Range("A2"), vbMonday) = 7 Then If Dir("path/nomDuFichier") = "" Then MsgBox "le fichier est introuvable!" else 'traitement 'ouvrir le fichier '... endif endif
eric
Merci de ton aide, ils étaient bien imbriqués.
J'ai trouvé une autre solution toute simple, je fais exit sub à la fin du if :)
Soilution vraiment toute bête merci pour ton temps!
J'ai trouvé une autre solution toute simple, je fais exit sub à la fin du if :)
Soilution vraiment toute bête merci pour ton temps!
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
25 avril 2012 à 14:09
25 avril 2012 à 14:09
parfait, n'oublie pas de mettre en résolu (en haut)
eric
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
25 avril 2012 à 14:20
25 avril 2012 à 14:20
parce que tu ne maitrises pas bien la stucture de ton programme
eric
eric
Et bien écoute j'ai repris le tout dans une macro toute simple :
Sub Valider_Click()
'Ouvre le classeur de Franck selon la date en A3 dans la feuille Chargement
If Dir("C:\" & Format([A3].Value, "dd mm yyyy") & ".xls") = "" Then MsgBox "le fichier est introuvable!"
Exit Sub
End If
'ouvrir le fichier
Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xlsx")
Unload Me
End Sub
Et la surprise il me dit qu'il y a un End If sans bloc If!!!
Sub Valider_Click()
'Ouvre le classeur de Franck selon la date en A3 dans la feuille Chargement
If Dir("C:\" & Format([A3].Value, "dd mm yyyy") & ".xls") = "" Then MsgBox "le fichier est introuvable!"
Exit Sub
End If
'ouvrir le fichier
Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xlsx")
Unload Me
End Sub
Et la surprise il me dit qu'il y a un End If sans bloc If!!!
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
25 avril 2012 à 14:30
25 avril 2012 à 14:30
il te manque les bases de la programmation...
2 syntaxes pour if :
if test then tratement 'tout sur une ligne : pas de endif
if test
traitement1
else
traitement2
endif
Je pense que la question de départ est résolue, je met le fil en résolu
Démarre un nouveau fil si nouvelle question
eric
2 syntaxes pour if :
if test then tratement 'tout sur une ligne : pas de endif
if test
traitement1
else
traitement2
endif
Je pense que la question de départ est résolue, je met le fil en résolu
Démarre un nouveau fil si nouvelle question
eric