Ouverture d'un fichier

Fermé
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008 - 31 juil. 2008 à 12:10
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 - 29 août 2008 à 16:29
Bonjour,

Je voudrais faire un bouton qui puisse ouvrir un fichier et y mettre un tableau en en-tête. Mettre le tableau en en-tête j'y suis arrivé. En fait dans mon programme j'ai mis que dés qu'on ouvre un fichier, le nom par défaut est "Classeur1", lui mettre le tableau (ex : Workbooks("Classeur1.xls").Worksheets("feuil1").Cells(9, 1).Value = " Nom"). Ici je n'est rempli qu'une seule cellule. Ensuite enregistrer ce Classeur dans un répertoire sous un autre nom que "Classeur1". Le probléme est que l'ordi m'enregistre "Classeur1" et le nouveau classeur enregistré, or moi je n'est plus besion de "Classeur1" je doit le supprimer à chaque fois. Y at-il une méthode plus simple? N'hésitez pas si ce n'est pas clair. Merci d'avance.

PS: Voici le programme qui me permet d'ouvrir le fichier : ActiveWorkbook.SaveAs Filename:= _
"D:\Mes Documents\" & nomcl & 1 & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False

14 réponses

Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
31 juil. 2008 à 23:36
Bonjour,
Ou avez-vous placé le bouton ?
Pour le classeur1 vous devez le renommer et ensuite vous l'enregistrez à l'endroit de votre choix.

PS: Voici le programme qui me permet d'ouvrir le fichier : ActiveWorkbook.SaveAs Filename:= _
"D:\Mes Documents\" & nomcl & 1 & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False


Sous (PS....) , sauf erreur de ma part se code n'ouvre pas un fichier mais enregistre le classeur actif......e
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
1 août 2008 à 11:51
Bonjour,

En fait le classeur1 est dans "D:\Mes documents\" et le bouton est dans un autre classeur (il est dans le classeur d'ouverture qui permet d'avoir accès aux différents classeurs). La commande que j'ai mise en PS permet d'enregistrer mais auparavant j'ai mis " Set Wb = Workbooks.Add" ce qui permet d'ouvrir un classeur. Le problème est que lorsque je renomme le classeur1 il me le met sous un autre nom mais il me garde toujours classeur1, ce qui est embêtant car à la suite de ça lorsque je veux ouvrir un autre fichier, il me met "Classeur2" par défaut et moi je veux qu'il me mette "Classeur1" à chaque fois que j'ouvre un nouveu fichier. Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
1 août 2008 à 13:42
Bonjour,
Si vous ouvrez un classeur déjà existant (classeur1 est dans "D:\Mes documents\") il va donc rester dans se répertoire.
Je suppose que se classeur est vide (puisque vous n'en voulez plus après avoir votre nouveau classeur renommé), donc il faut que votre code ouvre un nouveau classeur que vous nommez selon votre choix ...... vous insérez votre tableau .... et que vous enregistrez sous répertoire de votre choix.
Note: j'ai l'impression que vous faites une double opération car si vous ouvrez le classeur1 et n'est pas nécessaire d'ouvrir un nouveau classeur, il vous suffit de renommer le classeur1 et de l'enregistrer dans le répertoire choisi et c'est tout.
A défaut vous pouvez poster le code que vous avez écrit !
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
7 août 2008 à 10:51
Bonjour,

Le classeur1 n'est pas deja existant puisque c'est le nom du 1er classeur par defaut que l'on ouvre chaque fois que l'on veut demarre Excel. Moi ce que je veut c'est qu'a chaque fois que j'ouvre un nouveau classeur il apparait sous le nom de classeur1 comme si je venais juste de demarrer Excel et que j'ouvre une page Excel. J'ai essayer plusieurs codes mais en vain Voici un dees codes :

Sub Essai()
Dim nomcl$, Wb As Workbook, nb
nomcl = "Classeur"
nb = 1

nb = InputBox("Entrez le nombre de classeur à ouvrir", , nb)
If nb < 1 Then
MsgBox "Vous n'avez entré aucune valeur"
Exit Sub
End If

For i = 1 To nb
Set Wb = Workbooks.Add
On Error Resume Next

For Each Cel In Range(Cells(8, 1), Cells(9, 10))

Range(Cells(8, 1), Cells(9, 10)).Font.Bold = True

'Recopie de la première ligne d'en-tête
Workbooks("Classeur1").Worksheets("feuil1").Cells(8, 2).Value = " FEUILLE "
'NewBook["fName"].
Workbooks("Classeur1").Worksheets("feuil1").Range((Cells(8, 3)), Cells(8, 9)).Value = " SPEC "
Workbooks("Classeur1").Worksheets("feuil1").Cells(8, 10).Value = " ISO "

'Recopie de la deuxième ligne d'en-tête
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 1).Value = " Nom"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 2).Value = " LIBELLE"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 3).Value = " htc"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 4).Value = " Affaire"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 5).Value = "section_âme"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 6).Value = " âme"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 7).Value = " U"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 8).Value = " Ema"
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 9).Value = " Seg."
Workbooks("Classeur1").Worksheets("feuil1").Cells(9, 10).Value = "epais_isolant"


Next
Next
End Sub

'Avec ce code le nom du nom classeur1 par défaut n'est pas enregistré. Le programme se contente seulement d'ouvrir une page Excel et y inscrit le tableau ci-dessus. Par contre lorsque j'ouvre une 2eme page Excel il m'affiche classeur2 et n'y affiche pas le tableau.

Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
7 août 2008 à 16:12
Bonjour mus1705,
Eh bien vous avez 2 boucles "For i = 1 To nb et For Each Cel In Range(Cells(8, 1), Cells(9, 10)) "Dans votre première boucle, a chaque passage l'instruction "Workbooks.Add " vous crée un nouveau classeur et incrémente la numérotation classeur1,..2,...3 etc.
L'instruction pour une nouvelle feuille est "Worksheets.Add".

Note: dans votre code vous parlez de "Recopie..." mais en fait c'est vous ne recopiez rien du tout mais tout simplement vous créer votre mise en page de votre feuille........

Je viens de parcourir votre code "pas à pas" et il se trouve que votre boucle "For Each Cel In Range(Cells(8, 1), Cells(9, 10))"
qui sert à parcourir une à une les cellules de la plage "A8:J10" est inutile ou alors que le code qui suit n'est pas correct.
Que voulez-vous réaliser exactement ......!
Merci de votre réponse.
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
8 août 2008 à 10:53
Bonjour,


L'erreur viendrait de la 1ere boucle For i=1 to Nb : c'est elle qui incrémente classeur1 ? En la supprimant je devrais toujours obtenir un nouveau classeur1 ? En fait ce n'est pas de la recopie mais une mise en page. C'est en fait parce que je reprend un tableau deja existant dans un autre classeur, c'est pour cela que je parle de recopie. Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
8 août 2008 à 18:22
Bonjour,
Merci pour l'information.
Votre problème est-il résolu ?
0

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

Posez votre question
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
12 août 2008 à 16:42
Bonjour,


Le probleme n'est pas resolu mais comme je n'est plus assez de temps, je me consacre a autre chose. J'y reviendrais plus tard. Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
12 août 2008 à 23:31
Bonjour mus1705,
Merci de votre information.
J'ai pris quelques instants pour essayer de comprendre votre demande.
Est-ce que le fichier joint y répond ? https://www.cjoint.com/?imxEjycIOy
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
20 août 2008 à 14:15
Salut,

Desolé pour le retard, le doc ci-joint que vous m'avez envoyé me fonctionne pas. Lorsque je tape un nombre de classeur a ouvrir il m'affiche "erreur d'execution 1004", La methode 'Add' de l'objet 'Workbooks' a échoué. Au niveau du programme VBA l'erreur se situe sur la ligne 'nomcladd=Workbooks.add.Name'. Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
20 août 2008 à 14:46
Bonjour,
Je viens de faire un essai avec la version que j'ai envoyé et il n'y a aucun problème.
Vous avez bien enregistré le classeur sur votre PC ?
Qu'elle est la version d'Excel ?
L'avez-vous utilisé tel quel ?
Est-ce que les références VBAProject sont identiques aux document : https://www.cjoint.com/?iupiuUb1iK

Merci pour les réponses.
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
21 août 2008 à 14:42
Salut,


Pour répondre à vos questions : oui j'ai bien enregistré le classeur sur mon PC, j'ai la version Excel 2000, je l'est utilisé tel quel, et oui j'ai bien les 6 references VBAProject. Et toujours la même erreur. le problème doit forcement venir de mon ordi. Merci d'avance
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
21 août 2008 à 16:03
Bonjour mus1705,
Merci pour les informations.
Il ne s'agit pas de votre ordinateur mais certainement de la version Excel 2000, chez moi j'ai la 2003.
Je regarde le problème et une réponse suivra.
Note: oui j'ai bien les 6 references VBAProject mais est-ce bien les mêmes versions ?
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
21 août 2008 à 17:19
Bonjour mus1705,
Eh bien ce n'est pas la version qui fait problème, cela fonctionne sur les 2 versions.
Je pense qu'il s'agit d'un disfonctionnement d'Excel.
Si vous avez le CD d'installation original à disposition, je vous propose ceci : dans la barre de menu clic sur le ? et clic sur Détecter et réparer.... suivre les instructions ..... (le CD sera demandé si nécessaire !)...
Ensuite arrêter l'ordinateur et le redémarrer...
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
22 août 2008 à 14:00
Bonjour,


EN fait je suis en stage en entreprise et je sais pas si l'entreprise a le CD d'installation D'Excel, car dernierement c'est un prestataire externe qui nous a installer Access, donc a mon avis ils n'ont pas le CD. Voila
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 août 2008 à 14:54
Bonjour mus1705,
Vous pouvez essayé sans autre de le faire, il est possible que le système peut le faire sans avoir besoin du CD.
Autrement il faudra demandé au responsable de l'entreprise de faire mettre le PC en ordre.
Question: avez-vous absolument besoin de cette application ?
Bonne chance.
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
22 août 2008 à 15:40
Bonjour,


Mon tuteur de stage m'a fait comprendre qu'il aimerait bien que je fasse cette application. Maintenant si vraiment je n'arrive pas à réussir cette application, ça sert a rien de bloquer dessus, je lui dirait que je préfére avancer sur autre chose de plus accessible. D'autant plus qu'il ne me reste plus qu'une semaine pour terminer le projet de stage. pour l'nstant jai fait le plus gros travail la je ne fait que pofiner, voir ameliorer quelques application. Voila mon histoire est terminée. La j'essaye de faire une page HTML à partir des données d'un fichier Excel comportant un tableau de 1500 lignes environ et 10 colonnes. Si vous avez des idées car mon programme ne marche pas il me dit : " erreur d'execution '9' L'indice n'appartient pas à la selection". dans VBA il me selectionne en jaune : Print #1, "<td><b>" + NomsRub(Col) + "</b>" + vbCr;

Voici le programme en entier (Bonne lecture):

Public initFait As Boolean, Rdatex As String, Sep As String
Public Repert As String, NomFichMemb As String, WkMemb As Workbook
Public ShMemb As Worksheet, LdMemb As Integer, NbRub As Integer
Public NomsRub()

Function ouvert(Nom As String, Optional F As Boolean = False) As Boolean
Dim W As Workbook, Tr As Boolean
Tr = False
For Each W In Workbooks
If F Then
If W.FullName = Nom Then Tr = True: Exit For
Else
If W.Name = Nom Then Tr = True: Exit For
End If
Next
ouvert = Tr
End Function



'----------------------------------------------------------------Init
Sub Init()
initFait = True
Range(Rdatex).FormulaLocal = Date
ThisWorkbook.Save
Repert = ThisWorkbook.Path
Sep = Application.PathSeparator
NomFichMemb = "Classeur_Bases.xls"
If Not ouvert(NomFichMemb) Then Workbooks.Open Filename:=Repert + Sep + NomFichMemb
Set WkMemb = Workbooks(NomFichMemb)
WkMemb.Activate
Set ShMemb = WkMemb.Sheets("base_commune")
LdMemb = 10
NbRub = 10
NomsRub = Array("Nom", "Libelle", "htc", "Affaire", "Section_Ame", "Ame", "Tension", "Ema", "Type écran", "Corde")

End Sub

'------------------------------------------------------------------GenerHTM
Sub GenerHTM()
Dim Lig As Integer, Col As Integer, Rub As String
Rdatex = "A4"
If Not initFait Then Init
Open Repert + Sep + "base_commune.htm" For Output As #1
Print #1, "<html><head>" + vbCr; 'Début page
Print #1, "<title>Base commune aux trois utilisateurs</title>" + vbCr;
Print #1, "</head><body><center>" + vbCr;
Print #1, "<h2>Nexans</h2><//h2>" + vbCr;
Print #1, "<h2>Base commune aux trois utilisateurs</h2></center>" + vbCr;
Print #1, "table border width=95%>" + vbCr; 'Début tableau
Print #1, "<tr>" + vbCr;
For Col = 1 To NbRub 'Noms de rubriques
Print #1, "<td><b>" + NomsRub(Col) + "</b>" + vbCr;
Next Col
Print #1, "</tr>" + vbCr;
For Lig = LdMemb To 1500 'Les membres
If IsEmpty(ShMemb.Cells(Lig, 1)) Then Exit For
Print #1, "<tr>" + vbCr;
For Col = 1 To NbRub - 1 'Les rubriques
Rub = CStr(ShMemb.Cells(Lig, Col).Value)
If Rub = "" Then Rub = " "
Print #1, "<td>" + Rub + vbCr;
Next Col
Rub = CStr(ShMemb.Cells(Lig, NbRub).Value)
Next Lig
Print #1, "</table>" + vbCr;
Print #1, "</body></html>" + vbCr;
Close 1



End Sub
'------------------------------------------------------------------NouvMembre
Sub NouvMembre()
Rdatex = "A8"
If Not initFait Then Init

End Sub
'------------------------------------------------------------------ModifMembre
Sub ModifMembre()
Rdatex = "A12"
If Not initFait Then Init

End Sub
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 août 2008 à 16:44
Bonjour mus1705,
J'ai modifié le code pour contourner le problème : à essayer : https://www.cjoint.com/?iwqMcTUzSY !

Concernant votre nouveau problème, je vais regarder si je peux vous aider ...... (novice en HTML...)
Au fait, quelle est la macro de départ (principale)... merci
Note: sans le fichier Excel de référence je ne peux rien faire ... !
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
22 août 2008 à 20:36
Bonjour mus1705,
Concernant « page HTML », il y a une faute dans "Sub GenerHTM()" sur la boucle "For Col = 1 To NbRub".

L’index de tableau commencent à zéro, il est valable pour votre variable « NomsRub() »
Il faut en tenir compte en ajoutant "-1" à l’index "Col" dans la ligne suivante :
Print #1, "<td><b>" + NomsRub(Col - 1) + "</b>" + vbCr

Au passage, merci, comme cela j'ai appris sommairement comment créer une page HTML .... super
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
25 août 2008 à 11:31
Bonjour,


Merci pour les réponses. Concernant le problème de l'ouverture de classeur, le programme ne fonctionne toujours pas, il m'affiche ' erreur d'execution 1004, la methode "Add" de l'objet 'workbooks' a échoué'
Apr contre concernant la page HTML, le programme m'affiche bien les 10 element en en-tête mais il ne les met pas sous forme de tableau, les données sont stockées les uns a la suite des autres et non pas les uns sous les autres. Voici le fichier que je doit convertir en page HTML : https://www.cjoint.com/?izlEIw47Er

Merci d'avance
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
26 août 2008 à 14:25
Bonjour mus1705,
Concernant l'ouverture du classeur, voici une dernière proposition : https://www.cjoint.com/?iAoqJV8jRG

Concernant la page HTML, je n'ai pas les connaissances suffisantes en langage xHTML pour trouver l'erreur dans les diverses balises .... j'ai comme l'impression que le code "+ vbCr" ne fonctionne pas ....

Désolé de ne pouvoir en faire plus.
0
mus1705 Messages postés 30 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 29 août 2008
29 août 2008 à 15:50
Bonjour,


Je voudrais savoir si c'est possible d'activer et de desactiver une ou plusieurs zones de listes modifiables. J'ai 4 zones de listes modifiables donc 4 critéres de recherche. ESt-il possible de selectionner que 2 ou 3 zones de listes ? c'est a dire faire une recherche que sur 2 ou 3 critéres. J'ai réaliser 4 zones de listes modif dans un formulaire mais à chaque fois il faut que je fasse une recherche sur les 4 zones de listes. Merci
0
Le Pingou Messages postés 12241 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 février 2025 1 458
29 août 2008 à 16:29
Bonjour mus1705,
Merci pour les autres réponses.
Ceci vous aideras peut-être : https://www.cjoint.com/?iDqA0rVXr4
0