Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 18h02   #1
Invité de passage
 
Inscription : mai 2009
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 22
Points : 0
Points : 0
Par défaut problème avec commande

Bonjour à vous,

J'ai ces lignes de commandes pour réaliser une boucle de traitement, qui ne marche pas:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub BoucleDeTraitement() ' la boucle de traitement des fichiers
Application.ScreenUpdating = False
ChDir chemin
Fich = Dir(chemin & "*.xlsx")
Do While Fich <> ""
  Document.Open chemin & Fich 'c'est à partir de là que ça ne marche pas
  Modification
    Document.Close True
  Fich = Dir
Loop
Application.ScreenUpdating = True
End Sub
Est-ce que quelqu'un pourrait me dire ce qui ne va pas.
Cette ligne de commande fait partie d'une macro plus vaste, pourriez-vous effectuer un minimum de changement.

Merci à vous.
Sobas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 23h21   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 343
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 343
Points : 29 254
Points : 29 254
Salut,

Je suppose que tu es en Word !
Tu essaie d'ouvrir des fichiers Excel avec Word et ça ne fonctionne pas.
C'est tout à fait normal.

Les documents ont comme extension .doc, .docx ou encore .docm, mais pas xlsx.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 16h27   #3
Invité de passage
 
Inscription : mai 2009
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 22
Points : 0
Points : 0
J'avais pas vu !

J'ai changé le code mais ça ne marche toujours pas, il bogue toujours au même endroit. Il s'agit de fichiers .csv enregistrés à partir d'excel, mais qui peuvent être ouverts sur word. J'ai fait une macro sur word que je veux effectuer sur l'ensemble de mes dossiers.
voilà les nouvelles commandes:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub BoucleDeTraitement() ' la boucle de traitement des fichiers
Application.ScreenUpdating = False
ChDir chemin
Fich = Dir(chemin & "*.csv")
Do While Fich <> ""
  Document.Open chemin & Fich
  Modification
  ActiveDocument.Close True
  Fich = Dir
Loop
Application.ScreenUpdating = True
End Sub
Sobas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 21h52   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 343
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 343
Points : 29 254
Points : 29 254
Salut,

Word ouvre par défaut les fichiers doc, docx et docm.

CSV reste un fichier qui est ouvert par Excel, même si c'est pas le type de fichier par défaut d'Excel.

Dans ton code, chemin correspond à quoi ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2011, 14h16   #5
Invité de passage
 
Inscription : mai 2009
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 22
Points : 0
Points : 0
Salut,

ok je comprend l'histoire des dossier "types".

Mon chemin est:

chemin = FLoadNomDuREP: chemin = Trim(chemin): If chemin = ""

en fait il faut peut être que j'envoie toute la macro histoire de voir a quoi elle sert. En gros, c'est pour sélectionner un dossier cible est ensuite effectuer une macro en boucle sur l'ensemble des fichier contenus dans le dossier cible.
Voilà la macro:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Public Sub SelectionnerRepertoire()
chemin = FLoadNomDuREP: chemin = Trim(chemin): If chemin = "" Then Exit Sub
If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
DoEvents
'demande de confirmation
M$ = "Traiter tous les Fichiers xlsx du répertoire suivant :" & vbLf & chemin & vbLf & vbLf & "Veuillez confirmer ?"
ReponseMsgBox = MsgBox(M$, vbQuestion + vbYesNo, "Traitement des fichiers")
If ReponseMsgBox = vbYes Then
   BoucleDeTraitement ' appel la routine de traitement des fichiers
   MsgBox "Traitement terminé !", vbInformation
Else
   MsgBox "Traitement abandonné !", vbExclamation
End If
End Sub
 
' , &H1&)=avec bouton "créer un nouveau dossier" ... , $H201&)=sans le bouton
'objShell.BrowseForFolder(&H0&, "Sélectionnez un dossier", &H201&, RepDefaut)
Private Function FLoadNomDuREP() As String
Dim objShell As Object, objFolder As Object, REP As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Sélectionnez un dossier", &H201&)
If Not objFolder Is Nothing Then
   REP = objFolder.Items.Item.Path
   If Right(REP, 1) <> "\" Then REP = REP & "\"
End If
FLoadNomDuREP = REP
Set objShell = Nothing: Set objFolder = Nothing
End Function
 
'                                                                               .
'                                                                               .
 
Private Sub BoucleDeTraitement() ' la boucle de traitement des fichiers
Application.ScreenUpdating = False
ChDir chemin
Fich = Dir(chemin & "*.xlsx")
Do While Fich <> ""
  Workbooks.Open chemin & Fich
  traduction_données_brutes
  ActiveWorkbook.Close True
  Fich = Dir
Loop
Application.ScreenUpdating = True
End Sub
Voilà, en espérant que ça puisse aider
Sobas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h20.


 
 
 
 
Partenaires

Hébergement Web