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

  • Initiateur de la discussion Initiateur de la discussion bedley
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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)...
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à.
 
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 .
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
176
Retour