XL 2021 Récupérer les donner d'un feuille définie dans le dossier actif selon les trois premier lettre

juju91

XLDnaute Nouveau
Bonjour à tous,

Encore bloquer sur un probléme....

Voila; j'ai réussi a faire en sorte de récupérer plus plage de donner dans un autre classeur qui est dans le même dossier que le fichier actif.
Mon problème est que je souhaiterais pouvoir récuper les données du fichier selon les 4 premiers de celui....
C'est commencé par écrire le ''code'' ci-dessous mais ça ne fonctionne pas......

Pourriez-vous me guider SVP


Private Sub SEMAINE_Click()

Application.ScreenUpdating = False

'On Error Resume Next
With [C3:I363]
.Formula = "='" & ThisWorkbook.Path & "\[SEM*]S1'!C3"
.Value = .Value
End With

End Sub



Code qui fonctionne
Private Sub SEMAINE_Click()

Application.ScreenUpdating = False

'On Error Resume Next
With [C3:I363]
.Formula = "='" & ThisWorkbook.Path & "\[SEM 01]S1'!C3"
.Value = .Value
End With

End Sub

et merci a ceux qui prendront le temps de regarder nom ''probléme".
Cdt

Cdt
 

juju91

XLDnaute Nouveau
Bonjour à tous.
Je relance une discutions
Mon problème est que je souhaiterais pouvoir récuper les données d'un fichier selon les 3 premiers caractères de celui....
l'extraction des données change toutes les semaines depuis un classeur dont le nom commence toujours SEM N° XX.

J'ai commencé par écrire le ''code'' ci-dessous mais ça ne fonctionne pas.
Apriori ma solution avec [SEM_*] n'est possible
Pourriez-vous me guider SVP

En PJ deux fichiers exemples


Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

With [A2:G22]
.Formula = "='" & ThisWorkbook.Path & "\[SEM_*]S1'!A2"
.Value = .Value
End With

End Sub


encore merci de votre aide
 

Pièces jointes

  • SEM 1.xlsm
    22.3 KB · Affichages: 0
  • DESTINATION.xlsm
    26.5 KB · Affichages: 0

Staple1600

XLDnaute Barbatruc
Re

@juju91
J'ai ouvert tes classeurs
Pourquoi le fichier qui se nomme SEM 1.xlsm contient des feuilles S2, S3 et S4 ?
Ce n'est pas logique , non ?
Il ne devrait contenir que la feuille S1 ?

Si tes classeurs sont identiques et contiennent qu'une feuille nommée S##, ce serait simple de les compiler en utilisant PowerQuery
(donc sans macro, tout se faisant depuis Excel à la souris

C'est une piste qui t'intéresse ?
 

Staple1600

XLDnaute Barbatruc
Re

@juju91
Comme j'ai fait le test, je publie
Donc les fichiers sont dans dans le même dossier
(ici pour l'exemple : ESSAIS_MAI)
NB: Le code ci-dessous est du langage M (celui-de PowerQuery)
Il a été généré lorsque j'ai fait les manipulations manuellement
PowerQuery:
let
    Source = Folder.Files("C:\Users\STAPLE\Documents\ESSAIS_MAI"),
    #"Fichiers masqués filtrés1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
    #"Appeler une fonction personnalisée1" = Table.AddColumn(#"Fichiers masqués filtrés1", "Transformer le fichier", each #"Transformer le fichier"([Content])),
    #"Colonnes renommées1" = Table.RenameColumns(#"Appeler une fonction personnalisée1", {"Name", "Source.Name"}),
    #"Autres colonnes supprimées1" = Table.SelectColumns(#"Colonnes renommées1", {"Source.Name", "Transformer le fichier"}),
    #"Colonne de tables développée1" = Table.ExpandTableColumn(#"Autres colonnes supprimées1", "Transformer le fichier", Table.ColumnNames(#"Transformer le fichier"(#"Exemple de fichier"))),
    #"Type modifié" = Table.TransformColumnTypes(#"Colonne de tables développée1",{{"Source.Name", type text}, {"Column1", type any}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type text}})
in
    #"Type modifié"
Résultat obtenu
PQ_Capture.PNG
 

juju91

XLDnaute Nouveau
Bonjour,
Vous avez raison.
un il ne doit y avoir qu'une seule feuille ''S1''.
je ne sais pas utiliser powerquery et les personnes qui vont utiliser les fichiers encore moins.
Il faut que tout se fasse automatiquement sans intervention des opérateurs ...
C'est pour cela que je suis partie sur l'utilisation d'une macro qui est appelée avec un bouton dans le fichier destination.
l'opération peut être effectuer plusieurs fois par semaine, selon les modification apportées au fichier '' SEM 1''
D'ou mon souhait de passer par un code VBA, qui complique la choses.

Merci du temps que vous passez sur mon sujet .
 

Staple1600

XLDnaute Barbatruc
Re

@juju91
Tu as vu ma copie d'écran dans mon précédent message ?
Une fois la requete PowerQuery réalisée, c'est ensuite automatique, il suffit de cliquer sur Actualiser tout

Et pour pallier à ceci
je ne sais pas utiliser powerquery
Rien de plus simple
Tout se pilote à la souris
Et il y a de nombreux autres tutos à disposition sur le web
(dont des videos sur YT)

PS: Si les utilisateurs finaux ne connaissent pas VBA, quid en cas de plantage du code ?
Ils seront démunis
 

juju91

XLDnaute Nouveau
Bonjour,
En faite le fichier ''SEM" change de nom a chaque fois : "SEM N°1 23 05 15.xlsm"ou "SEM N°2 23 05 22.xlsm"etc..
et je voudrais récupère à chaque fois les informations qui sont dans la feuille S1.
apriori cela n'a pas l'air de fonctionner avec PowerQuery puisque le nom n'est pas le même.
 

Staple1600

XLDnaute Barbatruc
Bonjour

@juju91
Si cela fonctionne avec PowerQuery comme le montre ma copie d'écran du message#9
(Test réalisé avec ton fichier exemple)

Il faut simplement que les classeurs soient identiques au niveau de leur structure.

Pour faire mon test, j'ai copié/collé ton fichier exemple 3 fois
(en ne gardant qu'une feuille par classeur)

Et si tu regardes la copie d'écran en cliquant dessus, tu verras que j'ai bien les données de trois classeurs
(j'ai modifié le contenu de la cellule contenant Semaine 1, pour distinguer les 3 trois classeurs)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
J'arrive après la bataille et n'ai plus rien à dire, puisque l'ami @Staple1600 , m'enlève les Mots du clavier. :)
Rien si ce n ' est.. :
qu'il a raison de souligner que si vous êtes perdu avec Power-Query, vous le serez d'autant plus avec vba.
Je sais bien que pour beaucoup ici vba semble magique et la réponse à tout. Alors que vba est une vieille technologie qui comme moi est sur le déclin et que plus vous perdez du temps à l'apprendre aujourd'hui, plus vous vous amputez de moyens simples, directes et efficaces.
Mais bien-sûr il ne faut pas se laisser berner par ce qu'on voit et se donner un peu de mal au début.

Avec power query et quelques heures de prise en main vous aurez la chance d'être autonome, et ferez ce qui, avec Vba, vous demanderait des années de pratique ou que vous renonciez comme beaucoup ici à l'autonomie.

Pour votre problème sachez que power query peut traiter tous ou partie des fichiers d'un dossier dont les noms commencent par 'Sem'.

Pourquoi faire simple quand on peut faire compliqué ?

Un vbaiste acharné mais ni chronicisé ni sclérosé
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour @Hasco d'Azincourt ;)

@Hasco
sachez que power query peut traiter tous ou partie des fichiers d'un dossier dont les noms commencent par 'Sem'.
Avec une fonction personnalisée ?
Parce que je vois pas comment faire en simplement manipulant PQ à la souris ?
(ou alors tu charges dans PQ tous les fichiers présents dans un dossier et c'est ensuite seulement que tu "filtres" les fichiers commençant par SEM ?)
 

Discussions similaires

Statistiques des forums

Discussions
312 210
Messages
2 086 277
Membres
103 170
dernier inscrit
HASSEN@45