Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajouter une ligne de données à un array

Sujet résolu
    14 juin 2021 à 9:14:21

    Bonjour à tous,

    Je suis en train de faire une macro me permettant de trier des lignes de données suivant des critères. Aujourd'hui, je ne le fais pas de manière optimisée de mon point de vue puisque je fais de vulgaires copiés collés d'une feuille à une autre.

    Mon idée serait d'utiliser un array en ajoutant la ligne complète en tant que variable ou quelque chose du genre. Cela consisterait donc en l'analyse de la feuille principale et ajoutant les lignes dans des array différents suivant leurs caractéristiques et de tout simplement coller les array dans la feuille qui correspond à la fin. Je pense que cela optimiserait le temps et le travail de la macro.

    Petite précision, le système permettant d'analyser les lignes est déjà fait, je me concentre vraiment que sur le système me permettant de déplacer les données d'une feuille à l'autre. Je n'ai pas non plus trop de code à proposer ici, je fais tests, du bricolage mais ce n'est pas vraiment concluant pour l'instant.

    Evidemment si vous avez d'autres idées qui seraient optimisées je suis preneur.

    Je vous remercie d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      14 juin 2021 à 12:28:50

      peut-être un truc comme ça:

      Dim liste1 As New Collection
      liste1.Add FeuilSource.Range("A3").EntireRow
      liste1.Add FeuilSource.Range("A8").EntireRow
      
      
      liste1(1).Copy Destination:=FeuilDestination.Range("A1")
      liste1(2).Copy Destination:=FeuilleDestination.Range("A2")



      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2021 à 7:26:38

        Bonjour Umfred,

        La méthode pour enregistrer une ligne dans une collection semble fonctionner.

        Cependant, je ne parviens pas à coller toute la collection dans une feuille.

        Votre méthode permet de copier-coller une à une les lignes mais ça revient à la même méthode que j'utilise actuellement.

        • Partager sur Facebook
        • Partager sur Twitter
          15 juin 2021 à 11:54:44

          on peut réunir les plages avec Union

          Dim mesplages as Range
          Set mesplages = Union(FeuilSource.range("a1").EntireRow, FeuilSource.Range("a4").EntireRow, FeuilSource.Range("A8").EntireRow)
          
          
          Set mesplages=Union(mesplages, FeuilSource.Range("a12").EntireRow)
          
          
          mesplages.Copy Destination:=FeuilDestination.Range("A1")
          

          Autre possibilité, tu peux concaténer dans un Range les lignes 

          Dim ligne, ligne_bis
          ligne = Array("1:1", "4:4", "8:8")
          Set mesplages = FeuilSource.Range(Join(ligne, ","))
          
          'ou
          
          ligne_bis = Array(1, 4, 8)
          Set mesplages = FeuilSource.range(ligne_bis(0) & ":" & ligne_bis(0) & "," & ligne_bis(1) & ":" & ligne_bis(1) & "," & ligne_bis(2) & ":" & ligne_bis(2))


          ou un mix (avec une fonction pour passer de ligne_bis à ligne par exemple)

          • Partager sur Facebook
          • Partager sur Twitter

          Ajouter une ligne de données à un array

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown