macro non fonctionnelle

coniou

XLDnaute Nouveau
Bonjour,

Je début sur VBA. Je viens de créer une macro et le problème est que quand je la lance il ne se passe rien.

L'idée de cette macro est de récupérer les données qui m'intéresse provenant de 3 feuille excel est de les copier dans l'ordre qui m'intéresse sur une 4ème feuille.

Je sais que la question est assez peu concrète et que la description n'est pas très riche mais je voix pas trop comment développer.

Je vous donne la macro et le dossier sur le quelle je travaille (les tableau sont vide car je n'ai pas le droit de communiquer les info qu'ils contiennent)

Le code:

Sub trier()
Dim i, j, k, l As Long
k = 0
For i = 5 To Sheets("Feuil1").Cells("5,1").End(xlDown).Row
Sheets("Feuil6").Cells("i+k,1") = Sheets("Feuil1").Cells("i,1")
Sheets("Feuil6").Cells("i+k,2") = Sheets("Feuil1").Cells("i,10")
Sheets("Feuil6").Cells("i+k,3") = Sheets("Feuil1").Cells("i,16")
Sheets("Feuil6").Cells("i+k,4") = Sheets("Feuil1").Cells("i,17")
Sheets("Feuil6").Cells("i+1+k,5") = Sheets("Feuil1").Cells("i,22")
For j = 2 To Sheets("order_Esteve").Cells(2, 1).End(xlDown).Row
If Sheets("Feuil1").Cells("i,1") = Sheets("order_Esteve").Cells("j,1") Then
Sheets("Feuil6").Cells("i+2+k,6") = Sheets("order_Esteve").Cells("j,6")
Sheets("Feuil6").Cells("i+2+k,7") = Sheets("order_Esteve").Cells("j,5")
k = k + 1
End If
Next j
For l = 2 To Sheets("order_Esteve").Cells("2,1").End(xlDown).Row
If Sheets("Feuil1").Cells("i,1") = Sheets("order_Esteve").Cells("l,1") Then
Sheets("Feuil6").Cells("i+2+k,6") = Sheets("order_Esteve").Cells("l,6")
Sheets("Feuil6").Cells("i+2+k,7") = Sheets("order_Esteve").Cells("l,5")
k = k + 1
End If
Next l

Merci d'avance pour votre aide.
 

Pièces jointes

  • AIDE.xlsm
    62 KB · Affichages: 33
  • AIDE.xlsm
    62 KB · Affichages: 33
  • AIDE.xlsm
    62 KB · Affichages: 37

Dranreb

XLDnaute Barbatruc
Re : macro non fonctionnelle

Bonjour.

Je ne savais même pas qu'on pouvait spécifier une expression String comme paramètre à la méthode Cells !
Après examen d'espions appropriés :
Sheets("Feuil1").Cells("5,1").Address = "$E$1"
Sheets("Feuil1").Cells("5,1").End(xlDown).Row = 4
4 étant inférieur à 5 on ne passe pas du tout dans la boucle.
Mais les Cells("i+k,1") à coup sûr ne passeront pas ! Cells(i + k, 1) oui ! Mais ce sera très long à exécuter.
Il vaudrait mieux tout charger et décharger en une fois dans des tableaux VBA en mémoire.
 

Discussions similaires

Statistiques des forums

Discussions
312 764
Messages
2 091 860
Membres
105 080
dernier inscrit
mellusine83