Bonjour à tous,
Croyez-vous que si j'arrive à trouver le chemin en "version dos", ça pourrait fonctionner ?
Je ne sais pas si l'on dit version dos !?!?!?!
Merci
Bonjour à tous,
Croyez-vous que si j'arrive à trouver le chemin en "version dos", ça pourrait fonctionner ?
Je ne sais pas si l'on dit version dos !?!?!?!
Merci
Bizarre ce problème.
Essaye un chemin au format cours
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2...\Tables~1\...
'jour à tous, loufab
Question bête : comment puis-je déterminer le chemin complet au format cours ?
Merciiiiiiiiiiiiiiii
On prend les 6 premières lettre sans les espaces puis on rajoute ~1.
J'ai fait un essai avec un répertoire sans accent : aucun pb
mais avec un rep contenant des caractères accentués ça ne fonctionne pas.
Ben pareil !!!
On est donc bloqué ???
Merci
Poste un message sur le forum Windows car ce n'est pas normal que tu ais des problèmes avec les accents.
Bonjour Boulap,
A priori la table de caractères définie sous Dos ne correspond pas à celle utilisée sous Windows. En ce qui concerne les caractères dont le code est 0 à 127 aucun problème, mais dès que l'on utilise de 128 à 255, on a souvent ce genre de problème.
Un spécialiste de Windows trouvera peut-être la solution comme vous le propose Loufab.
Personnellement, j'ai préféré depuis longtemps ne plus utiliser les caractères spéciaux (y compris les espaces que je remplace par _) et les caractères accentués dans les noms de répertoires, de fichiers, de variables etc...
Ce n'est que mon avis, mais je pense que de toute façon ça ne peut qu'être source d'erreur surtout lorsque l'on utilise un langage de programmation quel qu'il soit.
Amicalement.
ben tu as les mêmes tu m'as dis ;-)Envoyé par loufab
'jour jacquesEnvoyé par jacques_jean
c'est ce que je fais aussi...
mais là il s'agit de répertoire existant que je ne peux renommer cas toutes les bases access viennent piocher dans ce répertoire en ce qui concerne les données !!!
Merci
Re Boulap,
Je pense avoir trouvé une solution. En tout cas, chez moi, cela a fonctionné.
Le problème est que j'ai fait au moins 5 manipulations différentes.
Je recommence donc en pas-à-pas pour trouver laquelle a donné le bon résultat et je reviens (si vous n'avez pas obtenu une autre réponse d'ici là bien sûr).
Re Boulap,
Je vais commencer par une question :
-avez-vous créé votre fichier .bat dans la fenêtre Dos avec la commande Edit ?
Re Boulap,
Lorsque j'ai créé le fichier .bat à travers l'Explorateur Windows j'ai eu le même problème que vous.
Donc finalement, si ce n'est pas ce que vous avez déjà fait vous pouvez modifier votre fichier .bat :
Démarrer puis Exécuter et taper Command puis cliquer sur OK.
Dans la fennêtre Dos vous tapez : Edit chemin\nomfichier.bat
La ligne de commande s'affiche dans l'éditeur. Elle devrait afficher des caractères bizarres à la place des caractères accentués. Vous remplacez ces caractères en tapant ceux qui sont nécessaires puis vous cliquez sur Fichier puis Enregistrer. A nouveau Fichier puis Quitter.
Vous tapez Exit dans la ligne de commande Dos pour terminer.
Vous pouvez de la même façon créer un nouveau fichier en tapant dans la fenêtre Dos : Edit chemin\nomfichier.bat
Dans la ligne de de commande vous tapez la commande que vous voulez exécuter puis vous terminez comme pour la modification (enregistrer etc..)
J'espère que cela va fonctionner pour vous comme pour moi (en matière d'informatique tant que l'on a pas vu le résultat, on peut toujours douter).
Pour bien voir ce qui se produit :
-à travers l'édition sous Windows vous tapez par exemple "exécuter" le "é" est remplacé par un autre caractère et donc la commande ne fonctionne pas.
-à travers l'édition sous Dos vous allez bien voir "Exécuter" mais en éditant ce fichier sous Windows cette fois le "é" sera remplacé par un autre caractère mais la commande devrait fonctionner.
Bonne chance.
Bonsoir,
à la place d'un fichier batch (.bat) on peut peut-être utiliser un fichier script vbs (.vbs)
J'ai édité le script dans Notepad.
Code vbs : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim WshShell Set WshShell = CreateObject("WScript.Shell") strACCESS = """E:\Program Files\Microsoft Office\Office\MSACCESS.EXE""" strDB = """E:\Mes Documents\Access\COMPTÖÎR2.MDB""" strCMD = strACCESS & " " & strDB & " /x import01 /cmd quit" WshShell.Run strCMD
J'ai mutilé deux caractères (O et I en Ö et Î), puis j'ai copié le nom de la base dans l'explorateur windows pour le coller directement dans Notepad.
Et la (en tout cas chez moi), pas de problème de jeu de caractères.
A+
effectivement le batch sans edit ou edlin avec des caractères accentués ça ne fonctionne pas.
Bonjour à tous !
-> jacques_jean : j'ai suivi à la lettre et tout fonctionne parfaitement, MERCI
-> LedZeppII : j'ai fait un 1er essai rapide j'ai une erreur avec ce code : "fin d'instruction attentue"
Faut dire que je n'y connais rien en vbs, j'ai mis ça dans le Bloc-Notes et j'ai ensuite enregistré en .vbs (reconnu car l'icone semble être le bon lol)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim WshShell Set WshShell = CreateObject("WScript.Shell") strACCESS = """C:\Program Files\Microsoft Office\Office\msaccess.exe""" strDB = """G:\Tables paramètres\Tables FORCE 9.mdb""" strCMD = strACCESS & " " & strDB & " /excl /x "mcrImport /cmd quit" WshShell.Run strCMD
-> loufab : ben dorénavant je le saurais ;-)
Merci à tous !!!
Bonjour,
il y a un " en trop devant mcrImport.
WshShell.Run en vb script est équivalent à la commande Shell en vba.
Autre présision : /cmd quit me permet de récupérer la chaîne "quit" avec la fonction Command().
A la fin de ma macro, j'ai dans la colonne condition Commande()="quit" et en face, l'action Quitter.
ça veut dire : si "quit" a été mis en tant que paramètre derrière /cmd alors exécuter l'action Quitter, pour fermer la base de données.
A+
merci de toute ces précisions LedZepp, c'est excellent ! par contre la base n'a pas été fermée à la fin de la macro !
ne pourrais-t-on également pas lui dire de compacter juste avant le quit ?
Merci
Bonjour,
Voici ma macro
Ceci dit la condition Commande()="quit" n'est pas indispensable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Condition Action ------------------ -------------------- Transférer Texte Commande()="quit" Quitter
C'est juste que je veux pouvoir lancer ma macro à la main sans que cela ferme Access.
Si tu ne mets pas Commande()="quit" et que tu laisse Quitter, la macro va fermer Access.
Sauf si une boîte de dialoque s'ouvre.
Pour ce qui est de la compaction, on ne peut pas demander à une base de se compacter elle-même
depuis une macro ou du code faisant partie de ladite base.
Il faut donc le faire faire par le script vbs.
J'ai Access 2000 et DAO 3.6 . Donc la ligne
Code vbs : Sélectionner tout - Visualiser dans une fenêtre à part
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 Dim WshShell, fso, oFile, dbe Set WshShell = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") strACCESS = """E:\Program Files\Microsoft Office\Office\MSACCESS.EXE""" strDB = """E:\Mes Documents\Access\COMPTÖÎR2.MDB""" strCMD = strACCESS & " " & strDB & " /x import01 /cmd quit" ' Exécuter une commande et attendre la fin de l'exécution. WshShell.Run strCMD,,1 ' On suppose que le nom la base est de la forme nom.xxx ' Enlève " à droite puis à gauche strDB = Left(strDB, Len(strDB)-1) strDB = Right(strDB, Len(strDB)-1) ' Crée chemin+nom pour sauvegarde base strBAKDB = Left(strDB, Len(strDB)-4) & "_BAK" & Right(strDB,4) ' Crée chemin+nom du fichier .ldb strLDB = Left(strDB, Len(strDB)-4) & ".ldb" ' On s'assure que le .ldb n'existe pas Do Wscript.Sleep 1000 Loop Until fso.FileExists(strLDB)=False If fso.FileExists(strBAKDB) Then fso.DeleteFile strBAKDB ' On renomme la base (sauvegarde) Set oFile = fso.GetFile(strDB) oFile.Move strBAKDB ' On compacte la base sauvegardée dans nouvelle base ' CreateObject("DAO.DBEngine.30") ou CreateObject("DAO.DBEngine.3") pour A97 ? Set dbe = CreateObject("DAO.DBEngine.36") dbe.CompactDatabase strBAKDB, strDB Set dbe = Nothingn'est pas valide pour Access 97. Il faut remplacer "DAO.DBEngine.36" par ????? autre chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set dbe = CreateObject("DAO.DBEngine.36")
Regarder dans la base de registre sous HKEY_CLASSES_ROOT. Il doit y avoir DAO.DBEgine ou DAO.DBEgine.xx
En cas de problème avec le script, tu peux débogger cette façon :
Créer une base Access vide.
Créer un module, enlever "Option Explicit" si il est en début de module.
Créer une Sub quelconque et coller le code du script dans la Sub.
Mettre en commentaire la ligne Wscript.Sleep 1000 qui ne pourra pas fonctionner dans Access.
Ensuite exécuter la Sub pas à pas (touche F8).
Bon courage.
Merci beaucoup LedZepp, je m'en suis sorti avec tes explications et ta patience ;-)
Pour le DAO.DBEngine.36, j'ai bien le même ;-)
Encore merci, je cloture le sujet.
@+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager