Extraction de donné venant de classeur différent VBA

anth33 Messages postés 6 Date d'inscription vendredi 29 juillet 2016 Statut Membre Dernière intervention 28 novembre 2024 - 28 nov. 2024 à 12:51
yg_be Messages postés 23357 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 - 28 nov. 2024 à 15:00

Bonjour,

Je commence tous juste à m'exercer à VBA, et je ne maitrise pas encore le sujet ^^

Bon but est le suivant, mais je vous met un fichier exemple également, ce sera plus simple.

J'ai un fichier avec une liste de bâtiment, avec des plage de date en face.

j'ai transformer cette version "tableau", en une version "calendrier" plus simple à lire.

les dates varié d'une semaine à l'autre. et pour chaque nouvelle date, je reçoit un nouveau tableau. Ce nouveau tableau à toujours le même format, avec les informations que je recherche au même endroit. Seul la valeur des dates change.

mon but est le suivant :

je sélectionne 1 bat, et j'extrait dans les différents fichier des semaines correspondant, la valeur des dates.

mon but étant de voir, si les dates varie beaucoup d'une fois à l'autre, et comment.

 https://www.cjoint.com/c/NKClTQ0ZDgm

j'ai regarder un peu, et sur ChatGPT, il mon proposer ce code :

Sub ExtraireDonnees()

' Déclarer les variables

Dim ClasseurSource As Workbook

Dim ClasseurCible As Workbook

Dim FeuilleSource As Worksheet

Dim FeuilleCible As Worksheet

Dim PlageSource As Range

Dim PlageCible As Range

' Définir le classeur cible (actuel)

Set ClasseurCible = ThisWorkbook

' Ouvrir le classeur source

' Remplacez "C:\chemin\vers\classeur.xlsx" par le chemin de votre classeur source

Set ClasseurSource = Workbooks.Open("C:\chemin\vers\classeur.xlsx")

' Définir la feuille source dans le classeur source

Set FeuilleSource = ClasseurSource.Sheets("Feuille1")

' Remplacez par le nom de la feuille source

' Définir la plage de données à copier dans la feuille source (par exemple, de A1 à D10)

Set PlageSource = FeuilleSource.Range("A1:D10")

' Remplacez par votre plage de données

' Définir la feuille cible dans le classeur actuel

Set FeuilleCible = ClasseurCible.Sheets("Feuille1")

' Remplacez par le nom de la feuille cible

' Définir la plage de destination dans la feuille cible (par exemple, commencer à A1)

Set PlageCible = FeuilleCible.Range("A1")

' Copier les données depuis la plage source PlageSource.Copy

' Coller les données dans la plage cible PlageCible.PasteSpecial Paste:=xlPasteValues

' Fermer le classeur source (sans enregistrer les modifications) ClasseurSource.Close SaveChanges:=False

' Afficher un message de confirmation

MsgBox "Les données ont été extraites avec succès!"

End Sub

Je pense que cela pourrait plus ou moins correspondre, mais je ne suis pas encore assez caler en VBA pour ajuster le code selon mon besoin.

Si quelqu'un a une idée, je suis prenneur svp ? (avec les explications qui vont avec histoire que j'apprenne un peu ^^)

Merci d'avance
Windows / Chrome 127.0.0.0

1 réponse

yg_be Messages postés 23357 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 Ambassadeur 1 555
28 nov. 2024 à 12:57

bonjour,

En quoi le code diverge-t-il de ton besoin?

Tu n'expliques pas clairement ce que tu souhaites précisément obtenir.

Souhaites-tu te former en VBA?

0
anth33 Messages postés 6 Date d'inscription vendredi 29 juillet 2016 Statut Membre Dernière intervention 28 novembre 2024
Modifié le 28 nov. 2024 à 13:15

En fait, une formation VBA, je suis pas contre, ça c'est certain ^^

pour mon sujet, soit je me suis pas super bien expliqué, soit c'est moi qui est pas ben comprit le code que l'on ma proposé (ou peut être les 2)

Je sais pas si un œil à été jeter un fichier que j'ai mis, il sera peut être plus parlant.

Si j'ai compris le code que l'on ma proposer, cela me permet d'extraire une valeur d'une cellule cible dans un fichier source, à inscrire dans mon fichier cible dans la cellule qui m'intéresse. Cependant je doit indiqué précisément la cellule cible, et celle ci est fixe

moi, ce que souhaiterai c'est que ma cellule cible (ce qui va récupérer les donnés), va varié en fonction de mon choix de bâtiment 

je sais pas si j'ai réussis à être plus précis dans ma demande

0
yg_be Messages postés 23357 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 555 > anth33 Messages postés 6 Date d'inscription vendredi 29 juillet 2016 Statut Membre Dernière intervention 28 novembre 2024
28 nov. 2024 à 13:42

Si en plus tu emploies le mot "cible" au lieu de "source", cela ne va pas aider à clarifier.

Tu as écrit plusieurs fois avoir plusieurs fichiers, peux-tu aussi clarifier?

Quand tu écris "j'extrait dans les différents fichier", le "dans" est peu clair.  Utilise plutôt "copier", et "à partir de" ou "vers".    

0
anth33 Messages postés 6 Date d'inscription vendredi 29 juillet 2016 Statut Membre Dernière intervention 28 novembre 2024 > yg_be Messages postés 23357 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024
28 nov. 2024 à 14:39

pas de soucis, désolé pour mes explications un peu vaseuse.

Je reçois chaque semaine un fichier de ce style là :

avec une liste de bâtiment, et des dates de disponibilité de celui-ci.

comme indiqué, ce fichier est mise à jour chaque semaine, avec des changements dans les dates.

mon souhait, serai d'avoir un fichier "synthèse" presque identique à celui ci, mise à part que j'aurai les numéro de semaine à la place du bâtiment,  sur lequel :

- je choisi un bâtiment de la liste :

- ensuite VBA, va ouvrir les différents fichier "semaine"

- il cherche dans charque fichier "semaine", la ligne du bâtiment que j'aurai choisi plus haut

- et récupère les dates.

Est ce que c'est plus clair ?

0
yg_be Messages postés 23357 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 555 > anth33 Messages postés 6 Date d'inscription vendredi 29 juillet 2016 Statut Membre Dernière intervention 28 novembre 2024
28 nov. 2024 à 15:00

Cela me semble bien compliqué.

Ne serait-il pas plus simple d'avoir toutes les données rassemblées dans un onglet, et de filtrer ensuite sur le batiment à examiner?

1