Inserer une ligne dans un tableau dinamique

Fermé
quent - 12 oct. 2014 à 22:06
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 15 oct. 2014 à 08:11
Bonjour,

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

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
13 oct. 2014 à 08:29
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
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
14 oct. 2014 à 09:25
Bonjour,

Est ce qu'on parle de variable tableau ou d'un "tableau" dans une feuille Excel?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
14 oct. 2014 à 10:12
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
15 oct. 2014 à 08:11
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