Appel d'un fichier excel 2007 fermé pour MAJ
Résolu/Fermé
clark...kent
-
17 avril 2012 à 09:51
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 19 avril 2012 à 16:58
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 19 avril 2012 à 16:58
A voir également:
- Appel d'un fichier excel 2007 fermé pour MAJ
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Liste déroulante excel - Guide
- Ouvrir un fichier .bin - Guide
14 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 18/04/2012 à 10:14
Modifié par lermite222 le 18/04/2012 à 10:14
Workbooks.Open ("C:\" & format([A3].Value,"dd mm yyyy") & ".xlsx")
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
19 avril 2012 à 16:58
19 avril 2012 à 16:58
Ouvre le classeur selon la date en A3 dans la feuille Chargement With Sheets("Chargement") Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xlsx") 'Recherche dans le nouveau classeur ouvert le nom ou l'équipe sélectionné With Sheets("Total")
Ca déjà ça va pas marcher... Quelle feuille Excel doit choisir ? y va se mélanger les pinceaux.
Tu peu faire..
Ouvre le classeur selon la date en A3 dans la feuille Chargement Sheets("Chargement").select Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xlsx") 'Recherche dans le nouveau classeur ouvert le nom ou l'équipe sélectionné With Sheets("Total")
les "Range" avec un point devant seront de la feuille Total et sans point de la feuille Chargement.
Mais le code que tu montre n'est pas assez explicite toutefois tu peut donner un critère qui provient d'ailleurs pour autant que tu le précise.
A+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 17/04/2012 à 10:57
Modifié par lermite222 le 17/04/2012 à 10:57
Re,
Excel peut il intégrer un calendrier hebdomadaire et mensuel en plus du calendrier journalier?
Mensuel, tu devrais mettre un combobox avec les noms de mois.
Hebdomadaire ? Par N° de semaine ? non.
Chacun de ces calendriers peut il s'afficher à la date d'aujourd'hui? j'ai essayé date et Now mais rien ne fonctionne, peut etre une erreur de parenthèse?
Tu dois séparer la date
Je sais pas tester ton calendrier je n'ai pas cet OCX. Tu l'a télécharger ?
Travailler sur d'autre classeurs ne pose pas de problème.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Excel peut il intégrer un calendrier hebdomadaire et mensuel en plus du calendrier journalier?
Mensuel, tu devrais mettre un combobox avec les noms de mois.
Hebdomadaire ? Par N° de semaine ? non.
Chacun de ces calendriers peut il s'afficher à la date d'aujourd'hui? j'ai essayé date et Now mais rien ne fonctionne, peut etre une erreur de parenthèse?
Tu dois séparer la date
Calendar1.Day = Day(Now) Calendar1.Month = Month(Now) Calendar1.Year = Year(Now)
Je sais pas tester ton calendrier je n'ai pas cet OCX. Tu l'a télécharger ?
Travailler sur d'autre classeurs ne pose pas de problème.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Encore toi, décidemment tu es le maître de ces lieux :)
Pour les mois, c'est ce que je pensais faire, mais le numéro des semaines l'utilisateur doit pouvoir les choisir en fonction des journées. Je m'explique.
Si il souhaite consulter la plage du lundi, mardi, mercredi de cette semaine, il ne va pas choisir 3 jours mais plutot le numéro de semaine correspondant.
Pour que le calendrier affiche la date d'aujourd'hui, j'ai déjà essayé plusieurs fois ta formule et il m'affiche une erreur au "Private Sub Jour_Click()"
Je t'invite à essayer avec d'autres calendriers si tu en possède d'autres.
Concernant le travail avec d'autres classeurs, je sais que c'est possible, j'ai trouvé le code pour faire appel à une feuille excel contenu dans un autre classeur. Seul problème, le classeur doit être ouvert et la formule fonctionne sans condition. Et à cet appel, je veux y mettre la condition de la date du calendrier qui sera sélectionné par l'utilisateur.(if?)
Et enfin pour l'OCX, non je ne l'ai pas téléchargé, il était intégré (office 2007), mais bizarrement il ne l'est pas chez moi (office 2010) donc un peu plus compliqué pour travaillé à la maison.
Merci
Pour les mois, c'est ce que je pensais faire, mais le numéro des semaines l'utilisateur doit pouvoir les choisir en fonction des journées. Je m'explique.
Si il souhaite consulter la plage du lundi, mardi, mercredi de cette semaine, il ne va pas choisir 3 jours mais plutot le numéro de semaine correspondant.
Pour que le calendrier affiche la date d'aujourd'hui, j'ai déjà essayé plusieurs fois ta formule et il m'affiche une erreur au "Private Sub Jour_Click()"
Je t'invite à essayer avec d'autres calendriers si tu en possède d'autres.
Concernant le travail avec d'autres classeurs, je sais que c'est possible, j'ai trouvé le code pour faire appel à une feuille excel contenu dans un autre classeur. Seul problème, le classeur doit être ouvert et la formule fonctionne sans condition. Et à cet appel, je veux y mettre la condition de la date du calendrier qui sera sélectionné par l'utilisateur.(if?)
Et enfin pour l'OCX, non je ne l'ai pas téléchargé, il était intégré (office 2007), mais bizarrement il ne l'est pas chez moi (office 2010) donc un peu plus compliqué pour travaillé à la maison.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 avril 2012 à 11:38
17 avril 2012 à 11:38
Pour la semaine, j'ai vu que tu avais mis des OptionButton, si Semaine est sélectionner il ne faut cliquer que sur un seul jour du calendrier et avec la fonction WeekDay trouver la semaine complète.
L'erreur est normale si tu n'a pas l'OCX sur ton PC, J'ai un autre calendrier mais la syntaxe est différente.
Le 2007 que tu à est probablement un "Pro" et le 2010 (comme mon 2007) est un "Studient"
Il y a moyen de télécharger un calendrier ICI mais je ne sais pas ce que c'est exactement.
Sur autre classeur : Tu peu ouvrir un classeur en invisible et faire tout ce que tu veux dedans, les conditions sont à implémenter dans ton code.
A+
L'erreur est normale si tu n'a pas l'OCX sur ton PC, J'ai un autre calendrier mais la syntaxe est différente.
Le 2007 que tu à est probablement un "Pro" et le 2010 (comme mon 2007) est un "Studient"
Il y a moyen de télécharger un calendrier ICI mais je ne sais pas ce que c'est exactement.
Sur autre classeur : Tu peu ouvrir un classeur en invisible et faire tout ce que tu veux dedans, les conditions sont à implémenter dans ton code.
A+
Ok je vais me renseigner sur cette fonction week day car je ne connais pas comment l'utiliser.
Sinon oui mon 2007 est bien une version pro. Le calendrier que tu m'as proposé n'est pas le même malheureusement.
Pour l'ouverture du classeur voici mon code : (soyez indulgent j'ai commencé le VBA il y a une semaine).
Sub Calendar1_Click()
Dim Cnx As ADODB.Connection
Calendar1.Day = Day(Now)
Me.Calendar1.Value = Date
'Définit le classeur fermé servant de base de données
Fichier = "C:\""Date" & ".xslx"
Set Cnx = New ADODB.Connection
'--- Connexion ---
With Cnx
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With
'... la requête ...
With Sheets("Total")
Lig = .Range("H65536").End(xlUp).Row
Sheets("Résultats").Rows("2:" & Lig).Delete
'Blanc Sheets("Base de données").Range("A2:K" & Lig)
.Range("A1:K" & Lig).AutoFilter Field:=8, Criteria1:=.[M1]
.Range("A2:K" & Lig).SpecialCells(xlCellTypeVisible).Copy Sheets("Résultats").[A2]
.Range("A1:K" & Lig).AutoFilter
Sheets("Résultats").Select
End With
'--- Fermeture connexion ---
Cnx.Close
Set Cn = Nothing
End Sub
Il bloque à la fonction open et me dis que le fichier est en lecture seule.
Ensuite mon critère situé en M1, j'essaye que celui-ci provienne du résultat de la sélection d'une zone de liste déroulante contenu dans mon userform.
Bref, je vais jamais m'en sortir, j'ai la tête comme une pastèque.
Sinon oui mon 2007 est bien une version pro. Le calendrier que tu m'as proposé n'est pas le même malheureusement.
Pour l'ouverture du classeur voici mon code : (soyez indulgent j'ai commencé le VBA il y a une semaine).
Sub Calendar1_Click()
Dim Cnx As ADODB.Connection
Calendar1.Day = Day(Now)
Me.Calendar1.Value = Date
'Définit le classeur fermé servant de base de données
Fichier = "C:\""Date" & ".xslx"
Set Cnx = New ADODB.Connection
'--- Connexion ---
With Cnx
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With
'... la requête ...
With Sheets("Total")
Lig = .Range("H65536").End(xlUp).Row
Sheets("Résultats").Rows("2:" & Lig).Delete
'Blanc Sheets("Base de données").Range("A2:K" & Lig)
.Range("A1:K" & Lig).AutoFilter Field:=8, Criteria1:=.[M1]
.Range("A2:K" & Lig).SpecialCells(xlCellTypeVisible).Copy Sheets("Résultats").[A2]
.Range("A1:K" & Lig).AutoFilter
Sheets("Résultats").Select
End With
'--- Fermeture connexion ---
Cnx.Close
Set Cn = Nothing
End Sub
Il bloque à la fonction open et me dis que le fichier est en lecture seule.
Ensuite mon critère situé en M1, j'essaye que celui-ci provienne du résultat de la sélection d'une zone de liste déroulante contenu dans mon userform.
Bref, je vais jamais m'en sortir, j'ai la tête comme une pastèque.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 17/04/2012 à 14:43
Modifié par lermite222 le 17/04/2012 à 14:43
Si tu ouvre un classeur comme une base de données ce que tu fait après n'est pas possible, tu peu juste extraire ou ajouter des données et il faut travailler comme dans une base de données.
Tu dois ouvrir le classeur tout simplement
WorkBooks.open("C:\Repertoire\MonFichier.xlsx")
ensuite tu peu travailler dans ce classeur.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Tu dois ouvrir le classeur tout simplement
WorkBooks.open("C:\Repertoire\MonFichier.xlsx")
ensuite tu peu travailler dans ce classeur.
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Salut,
Alors tout d'abord je me répond à moi même pour date :
Private Sub UserForm_Initialize()
Calendar1.Value = Date
End Sub
Private Sub Calendar1_Click()
ActiveCell.Value = Format(Calendar1.Value, "dd mmmm yyyy")
Range("A2") = Date
End Sub
La première initialise à la date d'aujourd'hui, la deuxième me colle la date dans une cellule, mon problème c'est qu'il me change pas la date quand j'en sélectionne une autre dans le calendrier.
Ensuite, pour l'ouverture du fichier excel, pas de problème mais ce que je veux, c'est que cette ouverture de fichier s'effectue selon la date sélectionné dans le calendrier, qui elle sera affiché en A3.
Exemple WorkBooks.open"C:/"Date sélectionnée".xslx"
et après une commande pour fermée la BDD excel une fois les copies et mises à jour effectués.
Alors tout d'abord je me répond à moi même pour date :
Private Sub UserForm_Initialize()
Calendar1.Value = Date
End Sub
Private Sub Calendar1_Click()
ActiveCell.Value = Format(Calendar1.Value, "dd mmmm yyyy")
Range("A2") = Date
End Sub
La première initialise à la date d'aujourd'hui, la deuxième me colle la date dans une cellule, mon problème c'est qu'il me change pas la date quand j'en sélectionne une autre dans le calendrier.
Ensuite, pour l'ouverture du fichier excel, pas de problème mais ce que je veux, c'est que cette ouverture de fichier s'effectue selon la date sélectionné dans le calendrier, qui elle sera affiché en A3.
Exemple WorkBooks.open"C:/"Date sélectionnée".xslx"
et après une commande pour fermée la BDD excel une fois les copies et mises à jour effectués.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 avril 2012 à 15:21
17 avril 2012 à 15:21
C'est comme je disais plus haut, chaque OCX à sa syntaxe.
Pour OPEN tu peu faire
WorkBooks.Open ("C:\" & [A3].Value & ".xlsx"
Pour fermer
ActiveWorkBook.Close
Quelque chose comme ça...
Mais je ne pense pas que c'est ça que tu veux faire.
Explique
Pour OPEN tu peu faire
WorkBooks.Open ("C:\" & [A3].Value & ".xlsx"
Pour fermer
ActiveWorkBook.Close
Quelque chose comme ça...
With Workbooks.Open("C:\" & [A3].Value & ".xlsx") 'Pour qu'il reste invisible ActiveWindow.Visible = False With .Sheets("Total") Lig = .Range("H65536").End(xlUp).Row Sheets("Résultats").Rows("2:" & Lig).Delete 'Blanc Sheets("Base de données").Range("A2:K" & Lig) .Range("A1:K" & Lig).AutoFilter Field:=8, Criteria1:=.[M1] .Range("A2:K" & Lig).SpecialCells(xlCellTypeVisible).Copy Sheets("Résultats").[A2] .Range("A1:K" & Lig).AutoFilter Sheets("Résultats").Select End With .Close End With
Mais je ne pense pas que c'est ça que tu veux faire.
Explique
si je ne peux pas tester le code chez moi, mais d'après ce que je lis ca semble ca que je veux faire...
Je ne connaissais pas cette partie
Pour OPEN tu peu faire
WorkBooks.Open ("C:\" & [A3].Value & ".xlsx"
Pour fermer
ActiveWorkBook.Close
Merci
Je ne connaissais pas cette partie
Pour OPEN tu peu faire
WorkBooks.Open ("C:\" & [A3].Value & ".xlsx"
Pour fermer
ActiveWorkBook.Close
Merci
la suite de l'aventure, donc pour ma date tout est ok, il l'écrit bien dans une cellule, A3 et au bon format. Par contre l'ouverture du classeur en question impossible. il me trouve une erreur ici.
Sub Valider_Click()
Dim Lig As String
'Ouvre le classeur de Franck selon la date collé en A3
Workbooks.Open Filename:=("C:\" & [A3].Value & ".xlsx")
J'ai essayé ça aussi "[A3].Value" ou sans le filename mais pareil, cela ne fonctionne pas.
Sub Valider_Click()
Dim Lig As String
'Ouvre le classeur de Franck selon la date collé en A3
Workbooks.Open Filename:=("C:\" & [A3].Value & ".xlsx")
J'ai essayé ça aussi "[A3].Value" ou sans le filename mais pareil, cela ne fonctionne pas.
En réalité, mon format de date est bon dans la cellule A3 (jj mm aaaa) mais lorsque j'éxécute la macro suivante
Workbooks.Open Filename:=("C:\" & [A3].Value & ".xlsx")
Il me cherche une date de format (jj/mm/aaaa) mais je ne peux pas mettre un tel format de date sur mes fichiers excel sources.
Workbooks.Open Filename:=("C:\" & [A3].Value & ".xlsx")
Il me cherche une date de format (jj/mm/aaaa) mais je ne peux pas mettre un tel format de date sur mes fichiers excel sources.
Clark...kent
Messages postés
44
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
1 mars 2020
2
19 avril 2012 à 13:51
19 avril 2012 à 13:51
J'ai une autre petite question technique, je n'ai pas voulu ouvrir un autre sujet.
Est ce que lors de l'utilisation d'un filtre (élaboré ou non), le critère de filtre peut il être situé dans le fichier destination plutot que dans le fichier excel base de données.
Exemple : Range("A2:L").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _"$A$5"), CopyToRange:=Range("A10"), Unique:=False
Mon A5 est dans le fichier destination, c'est le critère qui servira au filtre dans mon fichier excel ouvert au préalable sous condition grâce à ma macro.
Sub Valider_Click()
Dim Lig As String
'Ouvre le classeur selon la date en A3 dans la feuille Chargement
With Sheets("Chargement")
Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xlsx")
'Recherche dans le nouveau classeur ouvert le nom ou l'équipe sélectionné
With Sheets("Total")
Lig = .Range("H65536").End(xlUp).Row
'Blanc Sheets("Résultats").Range("A2:L" & Lig)
Range("A2:L").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"$A$5"), CopyToRange:=Range("A10"), Unique:=False
Sheets("Résultats").Rows("2:" & Lig).Delete
.Range("A2:L" & Lig).SpecialCells(xlCellTypeVisible).Copy Sheets("Résultats").[A2]
.Range("A1:L" & Lig).AutoFilter
Sheets("Résultats").Select
End With
End With
Unload Me
End Sub
Merci de votre aide.
Est ce que lors de l'utilisation d'un filtre (élaboré ou non), le critère de filtre peut il être situé dans le fichier destination plutot que dans le fichier excel base de données.
Exemple : Range("A2:L").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _"$A$5"), CopyToRange:=Range("A10"), Unique:=False
Mon A5 est dans le fichier destination, c'est le critère qui servira au filtre dans mon fichier excel ouvert au préalable sous condition grâce à ma macro.
Sub Valider_Click()
Dim Lig As String
'Ouvre le classeur selon la date en A3 dans la feuille Chargement
With Sheets("Chargement")
Workbooks.Open ("C:\" & Format([A3].Value, "dd mm yyyy") & ".xlsx")
'Recherche dans le nouveau classeur ouvert le nom ou l'équipe sélectionné
With Sheets("Total")
Lig = .Range("H65536").End(xlUp).Row
'Blanc Sheets("Résultats").Range("A2:L" & Lig)
Range("A2:L").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"$A$5"), CopyToRange:=Range("A10"), Unique:=False
Sheets("Résultats").Rows("2:" & Lig).Delete
.Range("A2:L" & Lig).SpecialCells(xlCellTypeVisible).Copy Sheets("Résultats").[A2]
.Range("A1:L" & Lig).AutoFilter
Sheets("Résultats").Select
End With
End With
Unload Me
End Sub
Merci de votre aide.