Importer la valeur d'une case d'excels vers un autre Excel

Le problème est simple:

J'ai un dossier qui contient des fichiers excels (il y en a qui se rajoute tout les jours dans ce meme dossier). Et Je souhaite récupérer uniquement la case A1 de l'ensemble de ces fichiers et qu'elles s'upload sur un fichier récapitulatif .

La difficulté c'est que je veux que celà se fasse automatiquement à chaque ajout de tableau excel dans le dossier.

J'ai pu trouver ce code si dessous sur se site mais il ne me renvoie que les adresses des fichiers et j'aurais besoins juste aussi de la valeur en A1 du coup .

Merci par avance de votre aide. Bonne continuation et j'espère à très vite.

MadCat

8forum.zip (16.66 Ko)

Bonjour ,

j'aurai 2 petite question pour fini le code :

- pour vous un dossier c'est un classeur ? un fichier excels est une feuille ? un tableau est un feuille aussi ou un tableau dans une feuille ?

Bonjour,

Un dossier contient des fichiers exels

un fichier excel lui peut contenir un ou plusieurs classeurs.

et ici je souhaiterai avoir pour chaque fichier excel dans le dossier leur récupérer la case A1 qui si trouve

Bonjour,

Juste un conseil au passage : il serait bon que tu alignes tes définitions sur les définitions officielles d'Excel (et de Windows), cela évitera de nombreuses confusions...

au temps pour moi .. je ferrai d'avantage attention ! =)

c'est peut être moi mais je ne trouve pas la réponse à mes question

madcat a écrit :

au temps pour moi .. je ferrai d'avantage attention ! =)

Bien pour le au temps ! (et non autant ).

Tu vois donc que tu peux parfaitement y parvenir !!

Bonne journée.

MFerrand a écrit :
madcat a écrit :

au temps pour moi .. je ferrai d'avantage attention ! =)

Bien pour le au temps ! (et non autant ).

Tu vois donc que tu peux parfaitement y parvenir !!

Bonne journée.

autant écrire "je ferai" alors

Patrick

Les fameuses réponse à vos questions

pour vous un dossier c'est un classeur ? non. c'est qqc qui contient ici des .xlsx (comme "Nouveau Dossier" quoi ^^)

un fichier excels est une feuille ? non. un fichier contient plusieur feuille c'est un .xlsx

un tableau est un feuille aussi ou un tableau dans une feuille ? un tableau est une feuille

Dossier (=Répertoire) = subdivision d'un lecteur sur un disque dur (ou assimilé) [lecteur = partition ou volume nommé d'un disque dur formaté]

fichier EXCEL = Classeur [avant Excel4, donc dans les années 80 aux tout débuts d'Excel, un fichier se limitait à une feuille de calcul, il est devenu Classeur dès lors qu'il a comporté plusieurs feuilles]

Feuille = élément d'un classeur Excel [principalement des feuilles de calcul, mais éventuellement des feuilles graphique, et qu'on n'utilise plus guère depuis l'apparition de VBA, des feuilles macro (macros Excel4), et feuille boîte de dialogue (celles-là depuis l'apparition de Microsoft Forms)]

La feuille de calcul est elle-même divisée en Lignes et Colonnes (1048576 lignes et 16384 colonnes depuis Excel 2007, 65536 et 256 dans les versions antérieures [97 à 2003]).

L'intersection d'une ligne et d'une colonne est une cellule (et non case qui n'a pas de définition et est une notion personnelle, pouvant comporter aussi bien une cellule que plusieurs).

Un ensemble de plusieurs cellules est une plage (de cellules).

Si une plage de cellules est composée d'ensemble séparés les uns des autres, on dit qu'elle est multi-zones. Dans ce cas la plage unitaire, ou sous-plage en quelque sorte, est appelée zone.

Et lorsqu'on remplit une feuille avec des données de façon à constituer l'ensemble en base de données : les colonnes sont des champs (de données), la première ligne comporte les noms de champs, chaque autre ligne constitue un enregistrement (ou unité élémentaire de la base). Base était dans les versions antérieures nommée Liste par Microsoft (les deux peuvent coexister, surtout s'il n'y a qu'une ou 2 colonnes).

Tableau désigne tout ensemble de données organisé en lignes et colonnes (à peu près tout dans la mesure où un tableur sert à organiser des données ainsi, cela inclut aussi de façon générique les bases de données). Il y a une certaine dualité avec les Tableaux Excel, fonctionnalité récente d'Excel...

On peut toujours dénommer de façon personnelle des éléments de configuration personnelle, mais il est bon alors de les définir en faisant référence à ces composants d'Excel. On arrive ainsi à parler de la même chose...

Cordialement.

Je plussoie

P.

Salut Patrick !

je te propose ceci :

Sub test()

Dim t() As String

Dim ws As Worksheet

ReDim t(10)

Application.ScreenUpdating = False

Dim chemin As String, nom As String

chemin = ActiveWorkbook.Path

nom = Dir(chemin & "\*.xls*")

c = 0

Do While nom <> ""

t(c) = nom

nom = Dir()

c = c + 1

Loop

i = 0

While i < UBound(t)

For Each ws In Workbook(t(i))

ligne = Range("A" & Rows.Count).End(xlUp).Row

Cells(ligne, 1) = ws.Cells(1, 1)

Next ws

End Sub


ps : il manque un "Wend" avant le "end sub"

Bonjour,

Je n'ai pas suivi le sujet mais :

i = 0
While i < UBound(t)
For Each ws In Workbook(t(i))
 ligne = Range("A" & Rows.Count).End(xlUp).Row
 Cells(ligne, 1) = ws.Cells(1, 1)
Next ws
End Sub

Il y a aussi un autre petit problème : i va rester à 0... et la boucle ne va pas s'arrêter !

Tu ferais bien d'indenter ton code, et d'utiliser la balise Code dans le post...

Cordialement.

oui je viens de me relire et il manque pas mal de petit détail désolé pour tout sa

Bonjour l'équipe Excel,

J'ai essayé de faire mon code mais ça plante un coup sur 2 ("Variable objet ou variable numérique du bloc With non définie" ) je n'arrive pas à obtenir les cases A1 j'obtiens simplement le chemin de recherche. Si quelqu'un veut bien tester et m'aider à trouver un solution ça serait toppissime.

Amicalement,

MadCat

Sub Importer_Prout()

Dim objShell As Object, objFolder As Object

Dim Chemin As String, fichier As String

Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)

If objFolder Is Nothing Then

MsgBox "Abandon opérateur", vbCritical, "Annulation"

Else

'Columns(1).NumberFormat = "m/d/yyyy"

Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"

[B1] = Chemin

fichier = Dir(Chemin & "*.xls")

Do While Len(fichier) > 0

If fichier <> ThisWorkbook.Name Then

ThisWorkbook.Names.Add "Plage", _

RefersTo:="='" & Chemin & "[" & fichier & "]Feuil1'!$A$1"

With Sheets("Feuil2")

.[A1] = "=Plage"

.[A1].Copy

Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(0, 1) = fichier

End With

End If

fichier = Dir()

Loop

End If

End Sub

Bonsoir,

Je suppose que compte tenu du problème posé, ce qui est en amont fonctionne et seul le fragment With... End With est en cause.

Cependant, si j'ai bien compris, le répertoire visé étant celui de ton fichier, tu pouvais te passer de cette gymnastique pour simplement définir le chemin à partir de : ThisWorkbook.Path....

                With Sheets("Feuil2")
                    .[A1] = "=Plage"
                    .[A1].Copy
                    Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)).PasteSpecial xlPasteValues
                    Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(0, 1) = fichier
                End With

Voilà le fragment de code concerné. Si ton code était indenté, tu verrais immédiatement que End With est un peu mal placé. Il vaudrait mieux écrire :

                With Sheets("Feuil2")
                    .[A1] = "=Plage"
                    .[A1].Copy
                End With
                With Sheets("Feuil1")
                    .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                    .Range("A" & Rows.Count).End(xlUp).Offset(0, 1) = fichier
                End With

Théoriquement cela ne devrait pas avoir d'incidence, mais... ?

Voir maintenant si la même erreur se reproduit, ou une autre !

Il serait bon que tu indentes ton code et que tu utilises la balise Code dans le post !

NB- tu n'as pas précisé sur quelle ligne se produisait l'erreur, n'oublie pas de le faire la prochaine fois (et avec numéro d'erreur s'il y en a un).

Bonjour,

je viens d'essayer le morceau de code que tu propose figure toi que ça me renvoie toutjours la meme erreur. Exactement ça : "Erreur d'execution '91' ". Le problème quand je lance debogage c'est apparement cette ligne qui est surlignée :

Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"

merci de ton aide en tout cas et si t'arrives à résoudre en plus le probème entre nous un grand bravo car ça doit faire 2jours que j'essaye d'avoir les cellules a1 ...

je rappelle l'écriture de mon Sub :

Sub Importer_A1()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, fichier As String

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)

If objFolder Is Nothing Then
    MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
    'Columns(1).NumberFormat = "m/d/yyyy"
    Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
    [E1] = Chemin
    fichier = Dir(Chemin & "*.xls")
    Do While Len(fichier) > 0
        If fichier <> ThisWorkbook.Name Then
            ThisWorkbook.Names.ADD "Plage", _
            RefersTo:="='" & Chemin & "[" & fichier & "]Feuil1'!$A$1"
            With Sheets("Feuil2")
                    .[A1] = "=Plage"
                    .[A1].Copy
                End With
            With Sheets("Feuil1")
                .Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                .Range("A" & Rows.Count).End(xlUp).Offset(0, 1) = fichier
            End With
        End If
        fichier = Dir()
    Loop
End If

Je ne connais pas les propriétés et méthodes de shell.application et pas de doc exhaustive...

As-tu testé si la valeur renvoyée était bien une chaîne ?

Peux-tu essayer d'enlever l'anti-slash, laisser "" à la fin de la ligne, récupérer la valeur renvoyée (si pas d'erreur) pour vérifier.

Interrompre la macro là, ou introduire l'antislash dans Chemin & "\*.xls"

Rechercher des sujets similaires à "importer valeur case excels"