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

Résolu
wire less Messages postés 247 Date d'inscription   Statut Membre Dernière intervention   -  
wire less Messages postés 247 Date d'inscription   Statut Membre Dernière intervention   -
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

3 réponses

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    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
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    Désolé je me suis planté...

    À plus,
    ThauTheme
    0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
      1. wire less Messages postés 247 Date d'inscription   Statut Membre Dernière intervention   5 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci les gars !
        Dsl ... j'avais oublié de boucler le sujet.
        0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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