Accueil > Forum > > > > vba excel : chdir
vba excel : chdir
jeudi 29 décembre 2005 à 16:36:20 |
vba excel : chdir

emlyd2207
|
je voudrais créer 2 boites de dialogues demandant de saisir l'année et l'autre, le mois, et reprendre ces 2 informations pour ouvrir automatiquement un fichier dans la directory de l'année et du mois concerné. Ex : on saisit "2005" et "12" et la macro va ouvrir dans les directories : .../2005/12.
Ci-dessous mon code (attention, je suis débutant !!!). La création des boites de dialogues marche mais c'est le chemin d'ouverture qui ne marche pas. Quelqu'un peut m'aider ? Merci d'avance.
Sub ImportStocks() ' ' ImportStocks Macro ' Importation et mise en forme d'un fichier txt des stocks de JDE
Dim VANNEE As String 'variable correspondant à l'année qui est saisie ds la boite de dialogue Dim VMOIS As String 'variable correspondant au mois qui est saisi ds la boite de dialogue
VANNEE = InputBox(prompt:="Saisir l'année concernant l'importation des stocks", Title:="IMPORTATION DES STOCKS") 'boite de dialogue pour l'année VMOIS = InputBox(prompt:="Saisir le mois concernant l'importation des stocks", Title:="IMPORTATION DES STOCKS") 'boite de dialogue pour le mois
ChDir "U:\Compta\Renoux\CptaIndus\VANNEE\VMOIS"
Workbooks.OpenText FileName:= _ "U:\Compta\Renoux\CptaIndus\VANNEE\VMOIS\stocks.txt", Origin:=xlWindows, _ StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(28 _ , 1), Array(35, 1), Array(39, 1), Array(46, 1), Array(52, 1), Array(79, 1), Array(90, 1), _ Array(120, 1), Array(140, 1), Array(143, 1), Array(160, 1)) End Sub
|
|
jeudi 29 décembre 2005 à 16:39:46 |
Re : vba excel : chdir

69chris
|
Réponse acceptée !
Salut,
Et bien rien de bien grave. Dans cette chaine : "U:\Compta\Renoux\CptaIndus\VANNEE\VMOIS\stocks.txt", VANNEE et VMOIS sont des chaines de caractères et ne désigne en aucun cas les variables. Il faut donc définir le chemin comme : "U:\Compta\Renoux\CptaIndus\" & VANNEE & "\" & VMOIS & "\stocks.txt"
Chris
N'oubliez pas de cloturer votre post.
|
|
jeudi 29 décembre 2005 à 17:10:31 |
Re : vba excel : chdir

chapata
|
Hi,
69Chris à raison, toutes tes variables VBA ne sont pas des chaines de caractères ... Il faut absolument les différenciés dans une chaine par
Ceci est ma chaine de caractère avec " & MaVariable & " sinon elle ne sera pas traitée en tant que variable.
Bon courage ...
ChaPaTa
  
|
|
jeudi 29 décembre 2005 à 17:25:44 |
Re : vba excel : chdir

emlyd2207
|
merci à chris et à chapata, ça marche maintenant très bien.
|
|
jeudi 29 décembre 2005 à 17:29:07 |
Re : vba excel : chdir

ScSami
|
Note que les commentaires, généralement, se mettent plutôt sur les lignes de codes que dessous même si, je te l'accorde, pour la lecture (surtout pour les débutants) c'est plus facile. Enfin, tu verras bien avec l'expérience (quand la nature de tes commentaires changera...) ! De plus, j'ai remarqué que tu n'employais pas d'indentations !!! Tes progs seront vite foutraques si tu ne prends pas rapidement cette habitude d'indenter ton code (pour info, "indenter" signifie "mettre des espaces devant ton code pour indiquer sa profondeur..."...).
Sinon, pour ton problème, en effet, ce n'est rien de grave. Je te conseille cependant de créer une variable spécialement pour stocker le chemin d'accès.
Dim varChemin As String ... varChemin = "U:\Compta\Renoux\CptaIndus\" & VANNEE & "\" & VMOIS & "\stocks.txt"
Mais je te conseillerais également de tester les données entrées afin d'éviter au maximum les erreurs (car ta technique est bien trop directe!!!) et, dans la foulée, mettre en place une gestion des erreurs... C'est d'ailleurs ce qui est chiant avec les macros qui jouent avec les fichiers... c'est qu'il faut être très prudent...
Voici donc comment je ferais ton code :
'ImportStocks Macro 'Importation et mise en forme d'un fichier txt des stocks de JDE
Sub ImportStocks() 'Déclaration des variables locales : 'Variable correspondant à l'année qui est saisie ds la boite de dialogue Dim varAnnee As String 'Variable correspondant au mois qui est saisi ds la boite de dialogue Dim varMois As String 'Variable stockant temporairement le chemin d'accès du fichier Dim varChemin As String 'Variable du texte du message d'erreur Dim varMsgErreur As String 'Activation du gestionnaire d'erreur On Error Goto GestionErreurs 'Boite de dialogue pour saisir l'année varAnnee = InputBox(prompt:="Saisir l'année concernant l'importation des stocks", Title:="IMPORTATION DES STOCKS : ANNÉE") 'Boite de dialogue pour saisir le mois varMois = InputBox(prompt:="Saisir le mois concernant l'importation des stocks", Title:="IMPORTATION DES STOCKS : MOIS") varChemin = "U:\Compta\Renoux\CptaIndus\" & VANNEE & "\" & VMOIS & "\" ChDir varChemin Workbooks.OpenText FileName:= _ varChemin & "stocks.txt", Origin:=xlWindows, _ StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(28 _ , 1), Array(35, 1), Array(39, 1), Array(46, 1), Array(52, 1), Array(79, 1), Array(90, 1), _ Array(120, 1), Array(140, 1), Array(143, 1), Array(160, 1)) 'Désactivation du gestionnaire d'erreurs On Error Goto 0 Exit Sub GestionErreurs: 'Gestionnaire d'erreurs varMsgErreur = "L'erreur N°" & err.Number & " est survenue." & vbNewLine varMsgErreur = varMsgErreur & "Description de l'erreur :" & vbNewLine varMsgErreur = varMsgErreur & err.Description & vbNewLine & vbNewLine varMsgErreur = varMsgErreur & "Veuillez verrifier les données entrées " & vbNewLine varMsgErreur = varMsgErreur & "et recommancer." & vbNewLine 'varMsgErreur = varMsgErreur & "" & vbNewLine MsgBox(varMsgErreur, vbOKOnly & vbCritical, "Erreur") End Sub
Code à tester par tes soins!
Enjoy 
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
|
|
jeudi 29 décembre 2005 à 17:36:58 |
Re : vba excel : chdir

emlyd2207
|
merci ScSami, je n'en demandais pas tant mais je prends toutes ces recommandations avec beaucoup d'intérêt. Je viens de finir ma formation vba débutant il y a à peine une semaine et je sens que je vais progressé très rapidement avec les membres de ce site. C'est très enthousiasmant de voir la réactivité et la convivialité des intervenants. A bientôt très certainement
|
|
jeudi 29 décembre 2005 à 17:40:07 |
Re : vba excel : chdir

ScSami
|
Heu... Oui, j'oubliais...
'Boite de dialogue pour saisir l'année varAnnee = InputBox(prompt:="Saisir l'année concernant l'importation des stocks", Title:="IMPORTATION DES STOCKS : ANNÉE") 'Si le texte ne comporte pas exactement 4 caractères, 'Ou si l'expression n'est pas numérique, 'On génère une erreur personnalisée. If Len(varAnnee) <> 4 Or IsNumeric(varAnnee) = False Then Err.Raise vbObjectError + 513, "MyProj.MyObject", "Le format entrée de l'année est invalide." If Then 'Boite de dialogue pour saisir le mois varMois = InputBox(prompt:="Saisir le mois concernant l'importation des stocks", Title:="IMPORTATION DES STOCKS : MOIS") 'Idem mais pour 2 caractères seulement! If Len(varAnnee) <> 2 Or IsNumeric(varAnnee) = False Then Err.Raise vbObjectError + 513, "MyProj.MyObject", "Le format entrée du mois est invalide."
Mais à tester quand même (parce que fait de tête)!
Enjoy 
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
|
|
Cette discussion est classée dans : array, mois, importation, année, stocks
Répondre à ce message
Sujets en rapport avec ce message
date [ par wareg ]
bonjourqu'elle est le code qui permet de calculer la différence entre deux dates au format jour, mois et année, sachant qu'il y a des text1, 2 et 3 po
date [ par wareg ]
dans un programme j'ai besoin de convertir des jours en jours, mois et année. Comment faire pour exécuter ce miracle.Sinon y a t'il possibilité de fai
Do Loop pour avoir jour mois année [ par Testuo ]
'lut, suis nouveau, commence juste la programmation. Sur Vb il met demandé de vérifier la validité de l'entrée année, mois et jour.Seulement pour le j
synthaxe de concaténation sous access [ par Nine30 ]
Bonjour, je débute avec Access alors je ne sais pas trop comment faire. J'ai 2 contrôles indépendants dans un formulaire: Mois et Année. Je cherche à
Premier jour du mois [ par JoVB ]
Hello, pour mon programme j'aurais besoin de savoir quel est le premier jour du mois en conaissanr l'année et (bien sur) le mois !Par exemple si je sa
conversion date [ par elbrahimo ]
salut à tous,j'ai une question toute simple, je récupére une date du typeMois/jour/année existe il une fonction qui convertit cette date en Jour/mois
Récupéré le mois avec année et numéro de semaine [ par XGuarden ]
Bonjour, je cherche un moyen de récupéré le nom d'un mois à partir de l'année et du numéro de semaine(en visual basic 6). En respectant la regle des
Tester une date d'aprés le mois + année [ par MMIC ]
BonjourJe voudrais vérifier si le mois d'une date + l'année existent déjà dans la base , exemple :j'ai saisi le 22/04/2005 dans un Dtpicker, et je veu
Problème de récupération d'une partie de date [ par Marnilla ]
Salut à tous,J'ai un soucis dans un de mes codes , je mets dans une variable la date du jour et je veux récupérer séparément l'année et le mois , l'an
Récupérer le mois et l'année d'une cellule [ par boudafc ]
Hello ! Voilà, je vous expose mon problème, je voudrais en fait récupérer juste le mois et l'année d'une cellule contenant une date (la cellule est
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|