Inserer une ligne dans un tableau dinamique

quent -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'aimerais savoir si il est possible d'inserer une ligne a un endroit précis dans un tableau dinamique.

5 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Quel est l'intérêt d'insérer une valeur à un endroit précis d'un tableau plutôt qu'en dernière position?
    0
    1. quent
       
      pour éviter d'avoir a déplacer toutes les valeurs du tableau a chaque fois pour gagner du temps, j'utilise une variable que j'incremente a chaque tour de boucle qui corespond au "debut" de mon tableau donc quand je veux rajouter une nouvelle valeur je veux qu'elle ce place a l'endroit de ce "debut" et non a la fin du tableau qui correspondrait a un endroit aleatoir dans l'ordre dont j'ai besoins.

      Je ne sais pas si j'ai été très claire mais en gros, l'ordre des valeurs a une importance et je ne veux pas que la valeur que je rajoute se retrouve a la fin
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Est ce qu'on parle de variable tableau ou d'un "tableau" dans une feuille Excel?
    0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Regarde cet exemple :
    Dim MonTab(), TbTemp(), i As Long
    'ici je remplit mon tableau ==> Inutile dans ton cas...
    For i = 0 To 20
        ReDim Preserve MonTab(i)
        MonTab(i) = "Liste " & i
    Next i
    
    'transfert du tableau dans une var tableau temporaire
    TbTemp = MonTab
    'redimensionnement de mon tableau
    ReDim Preserve MonTab(UBound(MonTab) + 1)
    Dim LignOuInserer As Long
    'la ligne ou je vais insérer ma donnée
    LignOuInserer = 15
    'retransfert des données avant la ligne à insérer
    For i = 0 To 14
        MonTab(i) = TbTemp(i)
    Next i
    'insertion donnée
    MonTab(15) = "Donnée " & 15
    'retransfert des données après la ligne à insérer
    For i = 16 To UBound(MonTab)
        MonTab(i) = TbTemp(i - 1)
    Next i

    0
  4. quent
     
    Bonjour,

    je parle bien d'une variable tableau.

    ton exemple marche mais avec ce code, plus le tableau augmente en taille, plus le temps d'éxecution augmente. si c'etait cela que je voulais, j'aurais fait un code sans utilisé un autre tableau comme ca :

    Dim MonTab(), i As Long
    For i = 0 To 20
        ReDim Preserve MonTab(i)
        MonTab(i) = "Liste " & i
    Next i
    ReDim Preserve MontTab(UBound(MonTab) + 1)
    Dim LignOuInserer As Long
    LignOuInserer = 15
    For i = UBound(MonTab) To LignOuInserer + 1 Step -1
        MonTab(i) = MonTab(i - 1)
    Next i
    MonTab(LignOuInserer) = "Donnée " & 15


    et c'est justement ce que je voulais éviter. c'est pour cela que je voulais savoir si il existait une fonction permettant d'inserer une ligne sans prendre le temps de décaler toutes les valeurs une par une.

    Merci de m'avoir aider
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Il n'existe pas de fonction permettant d'insérer une ligne dans une variable tableau.
    Mais si ce n'est que pour insérer une ligne, je ne comprend pas : plus le tableau augmente en taille, plus le temps d'éxecution augmente
    Ce que je comprend c'est que tu insères plusieurs données dans ton tableau. Si c'est le cas, pourquoi ne pas toutes les intégrer et trier tes données à la fin?
    Enfin, donne nous plus de détails sur ton projet, il existe peut être une autre façon de faire...
    0