Extraction de données automatique d'un autre fichier, feuilles par feuilles

Anonyme
2022-07-25T13:40:35+00:00

Bonjour à tous ! ☺

J'ai des cellules d'un tableau à remplir par les données d'un autre tableau. Plus précisément, j'ai 171 tableaux à remplir avec 171 tableaux. Le tableau A doit être rempli par un tableau de données précis. Pour me repérer le nom du tableau rempli s'appelle pareil que le tableau qui doit le remplir. Par exemple : tableau A doit être rempli avec les infos de tableau B.

J'aimerais savoir si il est possible de remplir le tableau une seule fois et qu'une macro remplisse les 170 autres avec les bonne données du classeur qui lui correspond...

Ça fait plusieurs jours que je cherche mais je crois que je n'ai pas encore les compétences pour ça. Quelqu'un saurait m'aider, svp ? ☺

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
DanielCo 107.7K Points de réputation
2022-08-09T13:38:45+00:00

Essaie :

Sub Nettoyage2()
Dim C As Range, Sh As Worksheet, Lig As Long, Col As Long
Application.ScreenUpdating = False
For Each Sh In Sheets
With Sh
.[B:B].Replace "~*", ""
.[B:B].Replace " ", ""
.Range("B3", .Cells(.Rows.Count, 2).End(xlUp)).NumberFormat = "#"
For Each C In .Range("B3", .Cells(.Rows.Count, 2).End(xlUp))
If C <> "" Then
If IsNumeric(C) Then
C = C * 1
End If
End If
Next C
End With
Next Sh
Application.ScreenUpdating = True
End Sub

Daniel

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
DanielCo 107.7K Points de réputation
2022-08-03T16:56:49+00:00

J'ai opté pour une autre solution qui évite de dupliquer les contrôles. On clique sur D2. UN formulaire s'affiche :

En remplaçant la partie du haut, les valeurs filtrées s'affichent en dessous. On clique sur la valeur choisie pour coller la valeur en D3.

Je t'enverrai le classeur demain.

Daniel

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
DanielCo 107.7K Points de réputation
2022-07-26T14:01:55+00:00

Essaie :

Sub test()
Dim Chemin As String, Sh As Worksheet
Chemin = "='A:\Service Import.Export\MAISON JAMEIN[Tableau palettisations Meiyume.xls]"
For Each Sh In Sheets
Sh.[B10].Formula = Chemin & Sh.Name & "'!B1"
Next Sh
End Sub

Cette macro suppose que les noms des feuilles soient les mêmes dans les deux classeurs, d'une part, et que de l'autre, il n'y ait que 171 feuilles dans le classeur.

Daniel

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

68 réponses supplémentaires

  1. DanielCo 107.7K Points de réputation
    2022-07-27T13:42:01+00:00

    Crée une feuille nommée "Listes" et teste la macro :

    Sub CreerListes()
    Dim Chemin As String, Sh As Worksheet, Col As Long, C As Range, Plage As Range
    Dim Wbk As Workbook, Adr As String
    Chemin = "A:\Service Import.Export\MAISON JAMEIN\Tableau palettisations Meiyume.xls"
    Set Wbk = Workbooks.Open(Chemin)
    For Each Sh In Sheets
    If Sh.Name = "Listes" Then Exit Sub
    Col = Col + 1
    With Wbk.Sheets(Sh.Name)
    Set Plage = .Range("B3", .Cells(.Rows.Count, 2).End(xlUp))
    End With
    With Sheets("Listes")
    Adr = .Cells(1, Col).Resize(Plage.Rows.Count).Address
    .Cells(1, Col).Resize(Plage.Rows.Count).FormulaR1C1 = "='A:\Service Import.Export\MAISON JAMEIN[Tableau palettisations Meiyume.xls]" & _
    Sh.Name & "'!R()+2C2"
    End With
    With Sh.[D3].Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=Adr
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    End With
    Next Sh
    End Sub

    Note qu'il est probable qu'il y ait des erreurs. Il serait plus rapide que tu partages les deux classeurs avec deux ou trois feuilles et sans données confidentielles.

    Pour partager un classeur, clique sur :

    https://www.cjoint.com/

    Clique sur le bouton "parcourir". Choisis le fichier à partager. Dans le bas de la page, clique sur le bouton "Créer le lien cjoint". Copie le lien affiché et colle-le dans ta réponse.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2022-07-27T13:00:24+00:00

    Daniel,

    Finalement, ca fonctionne avec ce code

    Sub refart()

    Dim Chemin As String, Sh As Worksheet

    Chemin = "='A:\Service Import.Export\MAISON JAMEIN[Tableau palettisations Meiyume.xls]"

    For Each Sh In Sheets

    Sh.[A18:A450].Formula = Chemin & Sh.Name & "'!B3" 
    

    Next Sh

    End Sub

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire