[XL 2003] Explication de code

koukou40

XLDnaute Occasionnel
Bonjour à Tous,

J'ai récupéré un fichier Excel d'un collègue démissionnaire qui travaillé très souvent avec VBA. Or, ce n'est pas du tout mon cas et je voudrais comprendre une partie du code de ce fichier :

"Sub Presentation()
Dim i, j As Integer
i = 2
Do While Sheets("Données").Cells(i, 1).Value <> ""
i = i + 1
Loop
i = i - 1
For j = 2 To i
Sheets("Essai").Cells(j, 1).Value = Sheets("Données").Cells(j, 14).Value
Sheets("Essai").Cells(j, 2).Value = Sheets("Données").Cells(j, 1).Value
Sheets("Essai").Cells(j, 3).Value = Sheets("Données").Cells(j, 63).Value
Sheets("Essai").Cells(j, 4).Value = Sheets("Données").Cells(j, 12).Value
Sheets("Essai").Cells(j, 5).Value = Sheets("Données").Cells(j, 18).Value
Sheets("Essai").Cells(j, 6).Value = Sheets("Données").Cells(j, 36).Value
Sheets("Essai").Cells(j, 7).Value = Sheets("Données").Cells(j, 24).Value
Sheets("Essai").Cells(j, 8).Value = Sheets("Données").Cells(j, 34).Value"


Merci d'avance pour vos réponses !

Amicalement,
 

Efgé

XLDnaute Barbatruc
Re : [XL 2003] Explication de code

Bonjour,
Je ne suis que "Junior", alors je vous explique avec mes maigres connaissances:
Il semble manquer quelques lignes, mais ce que l'on peut voir:

La macro va chercher la première cellule de la colonne A non vide de la feuille "Données" en concervant en mémoire le numéro de la ligne (Le i)
Do While Sheets("Données").Cells(i, 1).Value <> ""

Dés que la cellule est non vide recopie des valeurs de la feuille "Données" vers la feuille "Essai" cellule par cellule de la ligne trouvée:
Sheets("Essai").Cells(j, 1).Value = Sheets("Données").Cells(j, 14).Value

en espérant n'avoir pas enfoncé une porte ouverte,
Cordialement
 

Papou-net

XLDnaute Barbatruc
Re : [XL 2003] Explication de code

Bonjour koukou40,

Code:
Sub Presentation()
Dim i, j As Integer
i = 2
' Boucle tant que la 1ère cellule de la ligne i n'est pas vide
Do While Sheets("Données").Cells(i, 1).Value <> ""
' on incrémente le numéro de ligne
i = i + 1
Loop
' on retient le numéro de la dernière ligne vide
i = i - 1
' Boucle qui balaie les lignes 2 à la dernière ligne non vide (ligne i)
For j = 2 To i
' Recopie la cellule 14 de la ligne j (feuille "Données") dans la cellule 1 de la
' ligne j (feuille "Essai")
Sheets("Essai").Cells(j, 1).Value = Sheets("Données").Cells(j, 14).Value
' Recopie la cellule 1 de la ligne j (feuille "Données") dans la cellule 2 de la
' ligne j (feuille "Essai")
Sheets("Essai").Cells(j, 2).Value = Sheets("Données").Cells(j, 1).Value
' Recopie la cellule 63 de la ligne j (feuille "Données") dans la cellule 3 de la
' ligne j (feuille "Essai")
Sheets("Essai").Cells(j, 3).Value = Sheets("Données").Cells(j, 63).Value
' ...
Sheets("Essai").Cells(j, 4).Value = Sheets("Données").Cells(j, 12).Value
Sheets("Essai").Cells(j, 5).Value = Sheets("Données").Cells(j, 18).Value
Sheets("Essai").Cells(j, 6).Value = Sheets("Données").Cells(j, 36).Value
Sheets("Essai").Cells(j, 7).Value = Sheets("Données").Cells(j, 24).Value
Sheets("Essai").Cells(j, 8).Value = Sheets("Données").Cells(j, 34).Value
Next

Espérant avoir été clair.

Grillé par Efgé (bonjou Efgé)

Ps : pour optimiser le code, on peut remplacer la première boucle par la ligne suivante :

Code:
i=Sheets("Données").Range("A65536").End(XlUp).Row

Cordialement
 
Dernière édition:

Discussions similaires

Réponses
16
Affichages
981

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla