Bonjour,

je suis débutant en VBA EXCEL et je suis en train d'écrire une MACRO qui me permettra de copier le contenu de différents tableaux, tous du même modèle, dans un seul tableau.

Je rencontre de gros problèmes pour réaliser cette opération toute bête.

On m'a conseillé la syntaxe suivante, qui est tout à fait conforme à ce qui se trouve sur tous les sites mais elle ne fonctionne pas dans mon cas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Worksheets("Fichierdestination").Sheets(1).Range("A1").Offset(I) =Worksheets("Fichiersource").Sheets(1).Range("A1").Offset(J,K).Value
j'ai essayé plusieurs syntaxes pas très élégantes telle que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
   Worksheets("Fichiersource").Sheets(1).Activate    
    Range("A1").Offset(J,K).Select
    Selection.Copy
    Worksheets("Fichierdestination").Sheets(1).Activate 
    Range("A1").Offset(I).Select
    ActiveSheet.Paste
Ou bien encore :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
  Worksheets("Fichiersource").Sheets(1).Activate    
    Nom = Range("A1").Offset(J,K).Value
    Worksheets("Fichierdestination").Sheets(1).Activate 
    Range("A1").Offset(I).Value = NOM
Mais tout ça ne fonctionne pas. J'arrive à un résultat avec cette syntaxe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
While Range("A1").Offset(CURSEUR + 4).Value <> ""
 
                        Workbooks(FICHRESULTAT).Sheets(1).Activate
                        Range("A1").Offset(LIGNE).Value = DEPT
                        For Z = 0 To 12
                            CLASSEUR.Activate
                            Sheets(FEUILLLGT).Select
                            VARIABLE = Range("A1").Offset(CURSEUR + 4, Z).Value
                            Workbooks(FICHRESULTAT).Activate
                            Sheets(1).Select
                            Range("B1").Offset(LIGNE, Z) = Z & VARIABLE
                        Next
                        LIGNE = LIGNE + 1
                        CURSEUR = CURSEUR + 1
                        CLASSEUR.Sheets(FEUILLLGT).Activate
                    Wend
Ce code est destiné à me permettre d'intégrer dans mon fichier de destination les données contenues dans les 12 premières colonnes des fichiers sources file(I), tant que les lignes du fichier source ne sont pas vides (test du while). La variable LIGNE permet de copier le contenu des différents fichiers source les uns à la suite des autres. La variable CURSEUR de démarre la copie au bon endroit dans le fichier source.

Sauf que ça ne fonctionne pas toujours.

A savoir, pour certains fichiers, ça marche impeccable : il n'y a donc pas d'erreur au niveau des indices.

Pour d'autres je parviens à coller la valeur de la variable DEPT dans la première colonne, puis rien du tout. En fait je me suis apperçu que le contenu collé dans le fichier de destination était nul car si je fais coller la concaténation de l'indice Z avec le contenu de la variable VARIABLE, les valeurs de Z sont insérées au bon endroit et avec la bonne valeur, dans mon fichier de destination.

Je me demande si le problème ne varie pas en fonction du contenu des cellules, textes et nombre par exemple, mais ce n'est même pas certain. Bref, je patauge.

Si quelqu'un pouvait m'aider, je lui en serait très reconnaissant.

L'ensemble de mon code donne à peu près cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Set fs = Application.FileSearch   ' Exploration du répertoire REPERTOIRE
    With fs
        .LookIn = REPERTOIREBASE
        .Filename = "*." & EXTENSION
        For I = 1 To .FoundFiles.Count  'J'execute une boucle pour traiter tous les fichiers xls du répertoire
                Workbooks(FICHRESULTAT).Sheets(2).Activate
                Range("A1").Offset(I).Value = .FoundFiles(I) 'j'inscris le nom du fichier courant dans la 1ere colonne de la feuille 2 du fichier de sortie
                Workbooks.Open Filename:=.FoundFiles(I)
                Set CLASSEUR = ActiveWorkbook
                FEUILLLGT = "Logements"
                DEPT = "" 'Mise à zero de la valeur DEPT
                CURSEUR = 0  ' Mise à zero de la valeur CURSEUR
                NEANT = True 'je supppose par défaut que le fichier est vide
                CLASSEUR.Activate
                Sheets(FEUILLLGT).Select
                          '(je ne recopie pas le code qui m'a permis de trouver le contenu de la variable DEPT et les indices I et J, tout va bien de ce côté)
                            Range("A1").Offset(J, K).Select
                            DEPT = Selection.Offset(0, 1).Value
 
                If Not NEANT Then
 
                    While Range("A1").Offset(CURSEUR + 4).Value <> ""
 
                        Workbooks(FICHRESULTAT).Sheets(1).Activate
                        Range("A1").Offset(LIGNE).Value = DEPT
                        For Z = 0 To 12
                            CLASSEUR.Activate
                            Sheets(FEUILLLGT).Select
                            VARIABLE = Range("A1").Offset(CURSEUR + 4, Z).Value
                            Workbooks(FICHRESULTAT).Activate
                            Sheets(1).Select
                            Range("B1").Offset(LIGNE, Z) = Z & VARIABLE
                        Next
                        LIGNE = LIGNE + 1
                        CURSEUR = CURSEUR + 1
                        CLASSEUR.Sheets(FEUILLLGT).Activate
                    Wend
                Else
                    Workbooks(FICHRESULTAT).Sheets(3).Activate
                    Range("A1") = "Fichiers néant"
                    Range("A1").Offset(I + 1) = DEPT
                End If
                Workbooks(FICHRESULTAT).Sheets(2).Activate
                Range("A1").Offset(I).Value = CURSEUR - 3 - J
 
 
                CLASSEUR.Close
            Next I
        Else  ' Si aucun fichier ne correspond à l'extension EXTENSION
            MsgBox "Aucun fichier n'a été trouvé."
        End If
    End With