aide à comprendre la macro

PHILIP

XLDnaute Occasionnel
Bonsoir à tous ,
Novice , j'ai du mal à lire cette macro que l'on m'a écrit il y à fort longtemps et que je dois adapter à une nouvelle présentation Voila de quoi il s'agit dans la feuil2 j'ai des categories de palettes en colonne B et le nombre de ces palettes en ligneC que j'actualise une fois par jour .En A1 j'ai la date du jour aujourdhui() Dans la feuil1 j'ai le relevé du stock du mois avec en colonne A les jours du mois et en BCDEF les quantités des palettes la macro recherche la date dans la classeur 1 correspondant à la date aujourdhui de la feuille 2 et colle les quantités de cette feuil2 sur la ligne de la date trouvée en feuille 1 que veut dire CDate(tabtemp(1, 1)),et TabResult(1, 1) et dans TabResult(1, L) = tabtemp(L, 3) 1, L et L,3
Je joins le fichier et merci pour votre aide le mieux serait peut-être de commenter la macro ?

Code:
Sub transfert()
Dim tabtemp As Variant
Dim TabResult() As Variant
Dim L As Byte
Dim MaDate As Date
Dim C As Range
With Worksheets("Feuil2")
tabtemp = .Range("A1:C" & .Range("B65536").End(xlUp).Row).Value
End With
MaDate = CDate(tabtemp(1, 1))
  ReDim Preserve TabResult(1, UBound(tabtemp, 1))
   TabResult(1, 1) = MaDate
For L = 2 To UBound(tabtemp, 1)
    TabResult(1, L) = tabtemp(L, 3)
Next
With Worksheets("Feuil1")
Set C = .Range("A3:A" & .Range("A65536").End(xlUp).Row).Find(MaDate)
If Not C Is Nothing Then
    For L = 2 To UBound(TabResult, 2)
      C.Offset(0, L - 1) = TabResult(1, L)
    Next
End If
End With
End Sub
 

Pièces jointes

  • testV1.xls
    29 KB · Affichages: 44
  • testV1.xls
    29 KB · Affichages: 42
  • testV1.xls
    29 KB · Affichages: 45

tototiti2008

XLDnaute Barbatruc
Re : aide à comprendre la macro

Bonjour Philip,

j'ai commenté mais c'est un peu compliqué comme code, pour ce que ça fait.
tu devrais aller voir dans l'aide VBA sur le thème Tableau, ça pourrait t'aider à comprendre certaines instructions

Code:
Sub transfert()
Dim tabtemp As Variant
Dim TabResult() As Variant
Dim L As Byte
Dim MaDate As Date
Dim C As Range
'Dans la feuille 2
With Worksheets("Feuil2")
'On met dans un tableau (tabtemp) les valeurs
'de la cellule A1 à la cellule C(dernière ligne occupée colonne B)
tabtemp = .Range("A1:C" & .Range("B65536").End(xlUp).Row).Value
End With
'Dans la variable MaDate, on met la 1ère valeur récupérée du tableau, convertie en date
MaDate = CDate(tabtemp(1, 1))
'On crée un autre tableau d'une "ligne" et autant de "colonnes" que tabtemp a de lignes
  ReDim Preserve TabResult(1, UBound(tabtemp, 1))
  'Dans la première case du tableau, on met madate
   TabResult(1, 1) = MaDate
For L = 2 To UBound(tabtemp, 1)
'On remplit le nouveau tableau avec le contenu de la 3ème "colonne" du premier tableau
    TabResult(1, L) = tabtemp(L, 3)
Next
With Worksheets("Feuil1")
'On recherche la valeur de MaDate dans la 1ère colonne de la feuil1
Set C = .Range("A3:A" & .Range("A65536").End(xlUp).Row).Find(MaDate)
If Not C Is Nothing Then
    'Si on la trouve, on écrit les valeurs dans la ligne correspondante
    For L = 2 To UBound(TabResult, 2)
      C.Offset(0, L - 1) = TabResult(1, L)
    Next
End If
End With
End Sub
 

Statistiques des forums

Discussions
312 347
Messages
2 087 502
Membres
103 563
dernier inscrit
samyezzehar