Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Comment inversé l'ordre d'enregistrement des lignes dans un tableau

bedley

XLDnaute Nouveau
Bonsoir a tous !!!

Depuis un petit moment je suis confronté à un petit soucis. J'ai écrit un code VBA pour copier les données d'une listebox vers un tableau structuré. Cependant tout se passe bien mais le problème est que une fois insérer les enregistrements dans le tableau, l'ordre est inversé c'est a dire que la dernière ligne de données se retrouve en première ligne et la première ligne se retrouve à la dernière ligne insérer.

Voici un peux le code
Dim i as integer
Dim x as long

For i=0 To Me.list_des_taches.listcount-1

Rows(x & ":" & x).insert shift:=xldown

Cells(x,2)=Me.list_des_taches.list(i,0)
Cells(x,3)=Me.list_des_taches.list(i,1)
Cells(x,4)=Me.list_des_taches.list(i,8)

Le code fonctionne parfaitement à la seule différence que les enregistrements dans le tableau sont renversé comme je l'ai expliqué déjà.
Toutes aide me sera très utile. Merci
 
Solution
Voici entièrement le code pour copier les données de ma listebox vers mon tableau Excel

Dim i as integer
Dim x as long
Dim ws as worksheet

' j'ai défini la feuille active dans laquelle je veux insérer mes données depuis la listbox

Ws= sheets("Nomenclature_ matériaux_ infra")
Ws. Activate

' j'ai défini la dernière ligne

Finalrow= ws.cells(rows. count,2).end( xlup).row

' vue que le tableau contient déjà quelques données , je veux que les enregistrements commencent à la 6 iem ligne que finalrow aurait détecté. Donc j'ai défini la variable x

X= finalrow-6

For i= Me.list_des_taches.listcount-1 To 0 step-1

Rows(x & ":" & x).insert shift:=xldown

Cells(x,2)=Me.list_des_taches.list(i,0)
Cells(x,3)=Me.list_des_taches.list(i,1)...

bedley

XLDnaute Nouveau
Bonjour bebley,
Dans votre code que vaut "x" ?
Je ne vois nulle part initialisé. Or c'est "x" qui fixe la ligne où ecrire.
Merci sylvanu pour votre action.
X représente la ligne active dans laquelle les enregistrements doivent commencé

Voici entièrement le code
Dim i as integer
Dim x as long
Dim ws as worksheet

' j'ai défini la feuille active dans laquelle je veux insérer mes données depuis la listbox

Ws= sheets("Nomenclature_ matériaux_ infra")
Ws. Activate

' j'ai défini la dernière ligne

Finalrow= ws.cells(rows. count,2).end( xlup).row

' vue que le tableau contient déjà quelques données , je veux que les enregistrements commencent à la 6 iem ligne que finalrow aurait détecté. Donc j'ai défini la variable x

X= finalrow-6

For i=0 To Me.list_des_taches.listcount-1

Rows(x & ":" & x).insert shift:=xldown

Cells(x,2)=Me.list_des_taches.list(i,0)
Cells(x,3)=Me.list_des_taches.list(i,1)
Cells(x,4)=Me.list_des_taches.list(i,8)

End if
Next i
End dub

Le code fonctionne parfaitement à la seule différence que les enregistrements dans le tableau sont renversé comme je l'ai expliqué déjà.
 

bedley

XLDnaute Nouveau
Ok d'accord je vais tenter et vous reviens pour le résultat toute suites. MERCI encore une fois pour votre aide
Dans ce cas, au lieu de faire i de début à fin, essayez de faire :
For i= fin to début step -1
De cette façon il partira de la fin au début et les données devraient être dans le bon sens.
Super!!!! Ca marche nickel !!!! Vraiment Merci beaucoup .
 

bedley

XLDnaute Nouveau
Voici entièrement le code pour copier les données de ma listebox vers mon tableau Excel

Dim i as integer
Dim x as long
Dim ws as worksheet

' j'ai défini la feuille active dans laquelle je veux insérer mes données depuis la listbox

Ws= sheets("Nomenclature_ matériaux_ infra")
Ws. Activate

' j'ai défini la dernière ligne

Finalrow= ws.cells(rows. count,2).end( xlup).row

' vue que le tableau contient déjà quelques données , je veux que les enregistrements commencent à la 6 iem ligne que finalrow aurait détecté. Donc j'ai défini la variable x

X= finalrow-6

For i= Me.list_des_taches.listcount-1 To 0 step-1

Rows(x & ":" & x).insert shift:=xldown

Cells(x,2)=Me.list_des_taches.list(i,0)
Cells(x,3)=Me.list_des_taches.list(i,1)
Cells(x,4)=Me.list_des_taches.list(i,8)

End if
Next i
End dub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…