Aide sur réalisation d'un programme VBA

Bonjour,

J'ai de nombreux petits problemes sur la réalisation d'un programme VBA

Dans ce programme je créer une liste (listeRR1) dans laquelle j'insère des informations (sur un ligne et répartis dans 5 colonnes). Mes informations (dans la premiere colonne) donne un point kilométrique (de la forme 2450 pour 2km450m) et J'aimerais tout simplement ranger ces informations par ordre (du plus petit au plus grand) ... j'ai essayé un tas de choses mais je n'y arrive pas ... Voila ou j'en suis :

If Feuil2.Range("listeRR1").Cells(i, 1) < Feuil2.Range("listeRR1").Cells(i - 1, 1) Then
Feuil2.Range("listeRR1").Cells(i - 1, 1).EntireRow.Insert
'Feuil2.Range("listeRR1").[Cells(i, 1), Cells(i, 5)].Cut
'Feuil2.Range("listeRR1").[Cells(i - 1, 1)].Paste
End If

Explication : si la valeur que je viens de rentrer et plus petite que celle de la ligne au dessus, alors, j'insere une ligne entiere au dessus de la nouvelle valeur et je coupe (puis colle) la nouvelle valeur dans la ligne au dessus ...

SI cela vous semble incompréhensible je peux tenter de vous ré-expliquer ou de vous envoyer par mail mon fichier avec des annotations

Merci d'avance a tous
Bonne journée
Cordialement

1 réponse

  1. Contributeur
    Bonjour,

    tu souhaites faire un tri de tes données ?

    Passe par l'enregistreur de macro, effectue ton tri à la main, puis vérifie le code donné. Tu pourrais t'en inspirer pour l'ajouter dans une macro personnelle.

    Cordialement.
    0
    1. Oui je cherche à faire un tri ...
      j'ai petit soucis pour sélectionner les cellules de ma liste :

      With listeRR1
      Range("Cells(i, 1):Cells(i, 5)").Select

      qu'est ce qui n'est pas correct ?
      Merci
      0
    2. Contributeur
      Bonjour,

      il te faut enlever les guillemets, et mettre une virgule à la place des deux points, comme ceci :
      Range(Cells(i, 1), Cells(i, 5)).Select
      0
    3. J'arrive mnt à couper et coller des infos, cependant je doute que le "With listeRR1" fonctionne correctement puisque mes informations se trouve coller en dehors de ma liste ....
      sauriez vous comment contourner le probleme ?
      0
    4. Modérateur
      Bonjour tout le monde,
      Excusez l'incruste...
      A l'intérieur d'un bloc With End With, il est possible de faire appel à des éléments contenus dans l'objet référencé, mais également à des éléments contenus dans des objets autres.
      Pour faire appel ici, aux objets Range contenus dans l'objet WorkSheet référencé, il convient de mettre un point devant range.
      Essaye cette procédure dans un nouveau classeur :
      Sub test()
      Sheets("Feuil1").Select
      With Sheets("Feuil2")
          .Range("A1") = "Feuil2"
          Range("A1") = "Feuil1"
      End With
      End Sub
      0