Bonjour,

Je souhaite copier les colonnes d'un tableau contenu dans une feuille nommée 'TCD' au-dessus d'un tableau contenu dans la feuille 'DISPO'.

Chaque entête de la colonne du tableau contenu dans 'TCD' doit venir se positionner au-dessus de la colonne correspondante du tableau déjà présent dans la feuille 'DISPO'.

Si la colonne du tableau contenu dans 'TCD' n'est pas présente dans le tableau de la feuille 'DISPO' alors je dois cesser le traitement.

La recopie de la colonne ne se passe pas correctement car je n'utilise pas la bonne méthode Excel.

Voici le code :



Code :

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
Private Sub CommandButton1_Click()
 
Dim nbcoltcd As Integer
 Dim NbLignes As Integer
 Dim fin As Boolean
 Dim ko As Boolean
 Dim trouve As Boolean
 Dim datecharge As String
 
' Indice de la colonne traitée dans le 'TCD'
 Dim i As Integer
 
' Indice de la colonne traitée dans la capacité
 Dim j As Integer
 
' Nombre de colonnes de la disponiblité
 Dim nbcoldispo As Integer
 
' Recherche du nombre de colonnes de TCD
 nbcoltcd = Worksheets("TCD").UsedRange.Columns.Count
 
' Recherche du nombre de lignes de TCD
 
NbLignes = Worksheets("TCD").UsedRange.Rows.Count
 
' Recherche du nombre de colonnes à traiter dans le tableau "Capacité." (partie "disponibilité")
 
nbcoldispo = 2
 Do Until Worksheets("DISPO").Cells(10, nbcoldispo).Value = ""
    nbcoldispo = nbcoldispo + 1
 Loop
 nbcoldispo = nbcoldispo - 1
 
MsgBox "Nombre de colonnes à traiter dans le tableau des capacités :" & nbcoldispo
 
' Suppression du tableau de "charge" contenu dans l'entête de la capacité
 
Worksheets("DISPO").Range("B2").CurrentRegion.ClearContents
 
' Copie de la colonne des machines de TCD vers la feuille 'Capacité'
 Worksheets("TCD").Range("A2:A" & NbLignes).Copy Destination:=Sheets("DISPO").Range("A2")
 
' Boucle pour traiter toutes les dates
 ' Fin-trt, j'ai traité toutes les dates,
 ' Trt-ko, je ne trouve pas ma date dans la colonne des disponibilités
 
ko = False
 fin = False
 
i = 2
 
Do Until fin Or ko
 
    ' Recherche de la date dans la colonne de disponibilité
     trouve = False
 
    ' Initialisation de la colonne traitée dans la disponibilité
     j = 2
 
    datecharge = Worksheets("TCD").Cells(2, i).Value
 
    Do Until trouve Or ko
        ' MsgBox "je passe dans boucle"
         If Worksheets("DISPO").Cells(10, j).Value > datecharge Then
            ko = True
            MsgBox "ko"
         Else
             If datecharge = Worksheets("DISPO").Cells(10, j).Value Then
                MsgBox "Date trouvée : " & datecharge
                trouve = True
             End If
         End If
         j = j + 1
     Loop
 
    ' Si trouvé alors je copie la colonne de la "Charge" vers les dispo.
     If trouve Then
        j = j - 1
        MsgBox "Je copie la colonne n° " & i & " du tableau de tcd vers la colonne " & j & "du tableau de disponibilité."
        Worksheets("TCD").Range(Cells(2, i), Cells(NbLignes, i)).Copy
        MsgBox ("copie")
 
        Worksheets("DISPO").Range(Cells(2, j)).PasteSpecial xlPasteValues
 
**** la recopie plante sur la ligne ci-dessous
        Worksheets("TCD").Range(Cells(2, i), Cells(NbLignes, i)).Copy Destination:=Worksheets("DISPO").Range(Cells(2, j), Cells(NbLignes, j))
        MsgBox "J'ai copié !"
     End If
 
    ' Passage à la colonne suivante du tcd
     If ko = False Then
          i = i + 1
          If i > nbcoltcd Then
             fin = True
          End If
     End If
 
  Loop
 
If ko Then
    MsgBox "Traitement incorrect !"
 End If
 
End Sub
A l'exécution de la ligne de code située sous la ligne *****
j'ai le message d'erreur : "Erreur d'exécution 1004. Erreur définie par l'application ou par l'objet."

Merci d'avance.