Ajouter des données dans un tableau = Range("A1", "A99"].val

Résolu/Fermé
wire less Messages postés 210 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 29 août 2018 - 24 août 2015 à 14:48
wire less Messages postés 210 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 29 août 2018 - 8 sept. 2015 à 11:16
Bonjour,

Je dois ajouter une valeur dans un tableau :

Dim Tableau As Variant
Tableau = Range("A1", "A99"].value


J'ai essayé les méthodes suivantes, mais aucune ne fonctionne :
Tableau.AddItem "Toto"
Tableau.Add("Toto")
Tableau = Tableau & "Toto"


Bref, je suis paumé ...
Quelqu'un aurait un tuyau ???

Merci



A voir également:

3 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
24 août 2015 à 15:35
Bonjour,

C'est la galère, les tableaux... Pour modifier sa taille, il faut utiliser l'instruction ReDim :
Dim Tableau As Variant
Tableau = Range("A1", "A99").Value
ReDim Tableau(99)
For i = 0 To 98
    Tableau(i) = Cells(i + 1, 1).Value
Next i
Tableau(99) = "Toto"


A+
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié par ThauTheme le 24/08/2015 à 23:38
Désolé je me suis planté...


À plus,
ThauTheme
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
Modifié par eriiic le 26/08/2015 à 00:54
Bonjour,

ou bien pour éviter la boucle :
Sub test()
    Dim Tableau As Variant
    Tableau = Application.Transpose(Range("A1", "A99").Value)
    ReDim Preserve Tableau(1 To UBound(Tableau) + 1)
    Tableau(UBound(Tableau)) = "Toto"
    '[C1:C100] = Application.Transpose(Tableau)
End Sub

On ne peut changer que la dernière dimension d'un tableau d'où le Transpose()
eric


En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 août 2015 à 10:28
Salut Eric,

Une petite précision en complément de ta réponse.
Transpose fonctionnera parfaitement jusqu'à ... sa limite qui est 65536 (fonction de feuille excel inchangée en 2007).
Donc :
Tableau = Application.Transpose(Range("A1", "A65537").Value)

renverra une erreur 1004.
Pour les tableaux d'un nombre de "lignes" supérieur, il conviendra d'utiliser une fonction personnalisée, et donc, de boucler sur le tableau.
Amicalement,
Pijaku
0
wire less Messages postés 210 Date d'inscription lundi 5 octobre 2009 Statut Membre Dernière intervention 29 août 2018 5 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
8 sept. 2015 à 11:16
Merci les gars !
Dsl ... j'avais oublié de boucler le sujet.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
28 août 2015 à 15:25
Salut pijaku,

Tout à fait oui :-)
Ca va mieux en le disant, omission de ma part.
Boucler ou découper en blocs de 65536 lignes maxi.
eric
0