|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : vba excel : chdir [ Archives Visual Basic / VBA ] (emlyd2207)
Informations & options pour cette discussion
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é 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|