VBA excel

Résolu/Fermé
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012 - 1 mars 2012 à 13:44
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012 - 5 mars 2012 à 10:51
Bonjour,

Je suis en stage et je n'ai pas accès à internet directement, je me connecte à un réseau public et j'ai donc un débit pourri. Du coup je n'arrive pas à créer le lien cjoint.

Mais enfin je vais tenter d'expliquer mon problème de manière assez explicite pour que vous puissiez le comprendre.

J'ai un fichier excel présenté de la sorte :
A B C D E F
1 Nom Coût 1 Coût 2 Coût 3 Coût 4 Coût total
2
3
.
.
.
Dans un dossier de mon disque dur, j'ai plusieurs classeurs excel (Classeur 1, Classeur 2, etc). Et j'aimerais que par exemple dans la cellule A2 ci-dessus se mette le nom du Classeur 1, puis que dans les cellules B2, C2, D2, E2, F2 se mettent les différents coûts contenus dans des cellules du classeur 1. La macro ferait aller ensuite à la ligne 3 et remplirait les mêmes informations pour le classeur 2 et ainsi de suite pour les autres classeurs.

Comme je ne connais pas vraiment le langage VBA, j'avais enregistré une macro pour voir les lignes de code qui apparaissaient lorsque j'effectuais la manipulation pour le premier classeur. Mais je ne sais pas comment faire pour réitérer cette opération pour chaque classeur du dossier. J'imagine qu'il faudrait une boucle for each window in (je ne sais pas comment transcrire l'adresse du dossier) ..

Bref voilà j'espère avoir été assez clair et que vous pourrez me donner une piste quelle qu'elle soit.

Je vous remercie d'avance,

Mike1189

4 réponses

f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
1 mars 2012 à 15:29
Bonjour,
Je ne sais pas trop ce que vous voulez des informations collectees des autres classeurs, mais pour moi il n'y a pas besoin de VBA. Pour le nom des classeurs, vous les ecrivez manuellement et pour les cellules vous faites des copier/ collage special.. puis coller avec liaison. Cela devrait suffire.

A voir

Bonne suite
0
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012
1 mars 2012 à 15:41
Une cellule du classeur 1 contient le coût 1, une autre contient le coût 2, etc. Une cellule du classeur 2 contient le coût 1, une autre contient le coût 2, etc. Le but étant de réunir les valeurs contenues dans des cellules de différents classeurs dans un seul classeur pour les comparer directement.

En ce qui concerne les noms des classeurs, le dossier est voué à se remplir au fur et à mesure. Des nouveaux classeurs apparaîtront donc au fil du temps. L'objectif est donc de ne pas avoir à taper le nom du nouveau classeur à chaque fois qu'il s'en crée un !
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
1 mars 2012 à 15:51
Bonjour,

Excusez l'incruste...

Tu dis : se mettent les différents coûts contenus dans des cellules du classeur 1
des cellules... Hummm. Lesquelles?
Classeur1, classeur2, Classeur3 etc... contiennent tous cout1, cout2, cout3, cout4 et cout total? Dans les mêmes cellules? dans les mêmes feuilles? Si oui, nom de cette feuille?
0
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
1 mars 2012 à 15:58
Bonjour pijaku

Je vous laisse la main, je suis sur un autre sujet.
Merci.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
1 mars 2012 à 16:00
Salut,

1- on va se tutoyer non?

2- je n'aurais certainement pas de réponse pour lui aujourd'hui, donc garde un oeil sur ce sujet également.
Plus on est de fou plus on ri...
0
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
1 mars 2012 à 16:06
Re,
Ok
0
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012
2 mars 2012 à 10:51
Désolé pijaku je ne t'avais pas répondu. Oui tous les classeurs contiennent ces coûts car en fait chaque classeur est constitué de la même fiche donc les cellules contenant ces coûts sont toujours les mêmes, seul le classeur change. La feuille du classeur contenant la fiche et donc les coûts se nomme "Fiche_Description_Incident". Le but est donc de réunir tous les coûts des différentes fiches dans un seul classeur.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
2 mars 2012 à 16:13
Qu'elles sont les adresses des cellules contenant les couts?
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 309
1 mars 2012 à 16:30
Bonjour,

je n'ai pas trop le temps (boulot), mais il faudrait voir avec la fonction INDIRECT() pour récupérer les données dans les cellules des différents classeurs, si les cellules sont au même emplacement dans chaque classeur.

Cordialement.
0
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012
2 mars 2012 à 10:53
Il n'y a pas de soucis je comprends (pour le boulot). Je suis en train de voir comment fonctionne la fonction INDIRECT().
0
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012
2 mars 2012 à 15:51
Désolé de continuer de t'importuner. Mais de toute façon ça ne presse pas non plus tant que ça. Mais je ne comprends pas comment avec cette fonction je peux arriver à récupérer les infos contenues dans les mêmes cellules certes mais de classeurs différentes..
0
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
1 mars 2012 à 16:38
Re,

En attendant la suite pour les cellule, voici une Macro pour recuperer les nom de fichiers a condition qu'ils soient dans le meme repertoire.

il faudra qu'elle se lance a chaque fois que vous ouvrez le fichier recap ou/et avec un bouton sur la feuille recap.

Sub Recherche_Fichiers_xls()
Dim MonRepertoire As String, fso As Object, f As Object, i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
'A modifier par le chemin que vous avez besoin
MonRepertoire = ThisWorkbook.Path

With Sheets(1)
.Columns("A:A").ClearContents
For Each f In fso.GetFolder(MonRepertoire).Files
'Prendre les extensions fichiers que vous avez besoin
If Right(f.Name, 4) = ".xls" Or Right(f.Name, 5) = ".xlsx" Then
i = i + 1
.Cells(i, 1) = f.Name ' Nom du fichier
End If
Next f

End With
End Sub
0
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012
1 mars 2012 à 19:25
Re,

Désolé d'avoir tardé mais je n'arrivais plus à récupérer internet.

Merci en tout cas pour le programme je ne m'attendais pas à tant :), je l'utiliserai demain car je n'ai pas l'ordi du boulot avec moi.

Sinon je me rends compte que je n'ai pas été assez clair quant à l'explication de mon travail donc je vais retenter.

Je suis en stage chez ERDF et le but est de déterminer le coût des incidents. J'ai pour cela créé une fiche sur excel que je remplirai avec les coûts qu'aura engendré un incident. Cette fiche sera utilisée pour chaque incident (une fiche par incident). Cela signifie donc que quelque soit l'incident, les cellules contenant les coûts seront toujours les mêmes.
Et mon objectif est donc de récupérer dans un autre classeur tous les coûts d'un incident sur une ligne (d'où l'utilité d'avoir le nom associé à cet incident) puis ceux d'un autre incident sur la ligne d'en dessous etc. De cette manière, on aura accès aux coûts de tous les incidents dans un seul fichier excel.

J'espère que cette fois-ci j'ai réussi à mieux expliquer le problème :).

Cordialement.
0
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012
2 mars 2012 à 08:53
Merci f894009 ! Le programme fonctionne très bien. Maintenant, dans les autres cellules de la même ligne, je vais essayer de faire apparaître les coûts correspondant au bon nom de fichier.

Je vais étudier la fonction INDIRECT() qu'a suggéré chossette9 !
0
Mike1189 Messages postés 16 Date d'inscription lundi 20 février 2012 Statut Membre Dernière intervention 5 mars 2012
2 mars 2012 à 15:55
Désolé de revenir encore sur le sujet mais serait-il possible de rajouter dans ton programme les lignes de code permettant de récupérer justement les cellules souhaitées. Je m'explique entre le moment où on récupère le nom du fichier (.Cells(i,1)=f.Name) et le Next f le programme reste centré sur un classeur, on pourrait alors en profiter, si c'est possible, pour récupérer d'autres infos (en l'occurrence ici des valeurs de cellules) de ce même classeur. Possible ?
0