Macro VBA pose problème demande aide

Fermé
pixel - 12 mai 2010 à 13:52
 pixel - 18 mai 2010 à 08:08
Bonjour
je cherche actuellement une macro qui me permettrait de reporter des informations sur une feuille excel. cependant je n'arrive pas à conserver les informations que je reporte précedemment. voila mon code est ce que vous pouvez me dire si y a une erreure svp

'dans le classeur "Saisie" feuille "Paramètre"
Workbooks("Saisie.xls").Sheets("Paramètre").Activate
'recherche de la première ligne et enregistre tous les nom des fournisseur dans le fichier "Saisie.xls" onglet "Paramètre"
ligne = 1
While Not IsEmpty(Cells(ligne, 1))
ligne = ligne + 1
Wend
Workbooks("Saisie.xls").Sheets("Paramètre").Cells(ligne, 9).Value = valeur

merci d 'avance

A voir également:

8 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 295
12 mai 2010 à 14:30
ben! c'est normal!
explication ...

ligne = 1 ' là c'est ta variable
While Not IsEmpty(Cells(ligne, 1)) ' tant que la ligne n'est pas vide ...boucle
ligne = ligne + 1 ' incrémente
Wend
et je sort quand la ligne est vide ; )

Workbooks("Saisie.xls").Sheets("Paramètre").Cells(ligne, 9).Value = valeur
' ici j'écris une ligne vide.

je suppose que tu voulais écrire la dernière ligne pleine parce que vide ça sert pas à grand chose.

j'aurai écris....
sub test()
Range("a65535").End(xlUp).Select
maValeur = activecell.value
numligne=activecell.row
end sub
0
merci d repondre a ma question mais peut tu m'expliquer un peu plus ta reponse stp
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
12 mai 2010 à 15:13
Bonjour,
'recherche de la première ligne et enregistre tous les nom des fournisseur dans le fichier "Saisie.xls" onglet "Paramètre"

Beh oui... Mais "tous les noms des fournisseurs" y sont où ?
A+
0
y son sur un fichier nommer "mensuel" onglet "Feuil1"
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 295
12 mai 2010 à 15:46
bon je reprends ... ton programme ne fais qu'écrire un vide et rien d'autres.
j'ai essayé de te l'expliquais.
mais je reconnais que je n'ai pas lu ton commentaire mis en évidence par lermite222 .

pour avancer ... tu dis ce qu'il y a dans la collone A B C D.... et I

Ah oui! dans ton programme "valeur" n'est jamais renseigné.
0
ds mes colonne A.B.C.....y a rien prk?
0
Bidouilleu_R et lermite222 je vous remerci de m'aider mais j pense que ca serai mieux si je vous reexpliquer. J'ai 10 fichier excel sur lequel j'ai le nom d'un fournisseur ( qui se trouve dans la cellule A1 de tous les fichiers) et je voudrais que ces dix nom ce reporte dans un autre fichier ( nomme "Saisie" onglet "Paramètre"). donc arriver a avoir tous les nom des fournisseurs j'espère que j'ai bien expliqué merci d'avance
0
salut,

si j'ai bien compris ce que tu veux faire, voici une ou 2 pistes pour avancer un peu : il faut donc que ta macro ouvre tes 10 fichiers, dans ce cas la syntaxe c'est :
Workbooks.Open Filename:="Chemin\nomfichier1.xls" 
ensuite tu dois recuperer la valeur de chaque cellule A1 puis mettre cette valeur dans ton fichier de parametre :
workbooks("Saisie".xls").Sheets("Paramètre").Range("A1").Value=workbooks("nomfichier1.xls").Sheets("nomfeuil").Range("A1").Value
et ainsi de suite. A partir de ca, tu peux faire une boucle pour ne pas repeter 10 fois la manip. Du genre :
Dim nomfic(10) as string
nomfic(1)= "chemin\nomfichier1"
nomfic(2)= "chemin\nomfichier2"
 ...
for i = 1 to 10
Workbooks.Open Filename:=nomfic(i) workbooks("Saisie".xls").Sheets("Paramètre").Range("A" & i).Value=workbooks(nomfic(i)).Sheets("nomfeuil").Range("A1").Value
next


je n'ai pas tester, donc a verifier et il faut aussi adapter en fonction de tes noms de fichiers...
a+
0
d'acord merci beaucoup je vais essayer si ca marche
0
Bonjour gab j'ai essayé ta méthode mais j'ai di mal a comprendre tes ecritures je débute dans ce domaines et c'est vraiment très nouveau pour moi. pourez tu me rexpliquer stp
0

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

Posez votre question
Salut pixel,
deja petite rectification, il y avait un guillemet de trop et une autre erreur :-) :
 
Dim repfic(10) as string 'ici tu declare un tableau contenant 10 chaines de caracteres : il s'agit du repertoire de chaque fichier
Dim nomfic(10) as string 'ici tu declare un tableau contenant 10 chaines de caracteres : il s'agit du nom de chaque fichier

'ici tu remplit ton tableau avec les noms de tes 10 fichiers..
nomfic(1)= "nomfichier1.xls" 
nomfic(2)= "nomfichier2.xls"
'ici tu remplit ton tableau avec les noms des repertoires de tes 10 fichiers..
repfic(1)= "repfichier1"
repfic(2)= "repfichier2"

 ...
'boucle sur les 10 fichiers:
for i = 1 to 10
'ouverture du fichier
Workbooks.Open Filename:=repfic(i) & "\" & nomfic(i) 
'on recupere la valeur qu il y a dans A1 et on la met dans le fichier paramètre ( il faut que tes 10 feuilles aient le meme nom sinon il faudrat un peu modifier le code...)
workbooks("Saisie.xls").Sheets("Paramètre").Range("A" & i).Value=workbooks(nomfic(i)).Sheets("nomfeuil").Range("A1").Value
next


a+
gab
0
j'ai donner pour exemple 10feuilles excel mais j'en est beaucoup plus et je ne peut pas connaitre exactement le nombre. est ce que je peux vous envoyer mon dossier et vous demander de l'aide svp?
0
du coup c'est sur des fichiers différents ou sur des feuilles différentes que sont tes noms de fournisseurs?
0
sur des fichiers différents
0
dans ce cas tu mets tous tes fichiers excel dans un repertoire, ce repertoire ne devra contenir que ces fichiers excel (ceux ou y a les noms des fournisseurs) et rien d'autre.
avec ca ca devrait marcher (sauf si tes feuilles n ont pas le meme nom, dans ce cas il faudra faire quelques améliorations)

 
Set fso = CreateObject("Scripting.FileSystemObject")
Set rep = fso.getfolder("c:\temp\fichiers_des_fournisseurs")
   
 Set fichiers = rep.Files
'pour chaque fichier dans le repertoire : on ouvre le fichier et on recupere la valeur dans "A1" 
         For Each fichier_excel In fichiers
            i = i + 1
            Workbooks.Open Filename:=fichier_excel
           'on recupere la valeur qu il y a dans A1 et on la met dans le fichier paramètre 
           workbooks("Saisie.xls").Sheets("Paramètre").Range("A" & i).Value=Workbooks(fichier_excel.Name).Sheets("Feuil1").Range("A1").Value
Workbooks(fichier_excel.Name).Close ' on ferme le fichier au passage
Next


Bon courage :-)
0
effectivement mes fichier porte le nom des fournisseurs :(
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 16/05/2010 à 16:12
Sur un poste plus haut tu dis...
y son sur un fichier nommer "mensuel" onglet "Feuil1
Donc : ce serait le classeur.. Mensuel.xls sheets("Feuil1") colonne "A" ?

Tu dis ensuite...
J'ai 10 fichier excel sur lequel j'ai le nom d'un fournisseur ( qui se trouve dans la cellule A1 de tous les fichiers)

Là il y a une contradictions entre tes deux versions, faudrait essayer d'être plus précis, et surtout plus clair.
Répond POSEMENT et en REFLECHISSANT.
Où sont les noms des clients que tu veux saisir ????

Et jusqu'à présent, le but de la manoeuvre n'est toujours pas définit ??

L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
j'ai un fichier Excel nommer "Saisie" sur un de ces onglets j'ai créer un formulaire ( "Contrat")onglet ou je peut saisir des données. une fois que je valide ce dernier j'ai une feuille qui s'ouvre et qui c'est nommer en meme temps sous le nom du fournisseur. sur cette feuille j'ai le nom du fournisseur que je veut recupere (cellule B4). et ce que je cherche a faire c'est recupere lesnom des fournisseur sur le fichier "Saisie" onglet "Paramètre"
0
voila mes dossier si quelqu'un veut m'aider :
https://www.cjoint.com/?frmFcgSMpG
https://www.cjoint.com/?frmFC1Ejxc
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
17 mai 2010 à 16:46
J'ai regardé tes deux classeurs,
en essayant de comprendre...
Mais Puiffff, que tu complique les choses... Pour faire une appli un peu complexe tu ferais bien d'abord d'un peu apprendre le VBA.
Pas besoin d'autant de classeurs que de fournisseurs, mémoriser toutes les données dans une feuille ligne par ligne en numérotant (ou pas) les fournisseurs.

Facile ensuite de retrouver quelque chose.
Avant de te lancer dans une appli tu doit savoir exactement ce que tu veux faire et pas avancer le nez en l'air.

Une piste pour te donner des idées !
A+
0
je n'ai que 20ans donc c'est le début je ne peut déja pas tous savoir
0
J ai aussi regardé tes 2 classeurs (sans essayer de tout comprendre), j'ai fait un test et il y a bien la valeur fournisseur qui se stocke dans ta premiere ligne non vide de la feuille Paramètre (cad la valeur qui est entre dans une textbox=> ca marche et je ne vois pas le lien avec le deuxieme fichier, puisque la valeur est recupéré d une textbox: UserForm1.TextBox17.Text, d autant plus que le 2eme fichier est créé après avoir ecrit la valeur dans la feuille paramètre) ... je ne comprend pas ou est ton probleme (toujours pas....)
0
oui cela marche mais il a fallut que je le mette dans le module au lieu que sa soit sur le bouton valider, mais sinon sa marche comme ca
0