IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA alimenter et restituer un tableau à 2 dimensions


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Par défaut VBA alimenter et restituer un tableau à 2 dimensions
    Bonjour a tous,

    J'ai un souci d'alimentation de tableau a plusieurs dimensions.
    Le principe est de parcourir la colonne A et de vérifier la présence d"une chaine, si oui alimente le tableau avec la valeur d'une autre cellule.

    j'arrive à alimenter une dimension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Dim plage As Range, cell As Range
    Dim wks As Worksheet
    Set wks = Worksheets("Feuil1")
    Set plage = Range("A1:A" & wks.UsedRange.Cells.Count)
    Dim i As Integer
    Dim Tableau() As Variant
     
    i = 0
    For Each cell In plage
        If cell.Value = "TITRE" Then
        'Définit la taille du tableau et le type de données.
        ReDim Preserve Tableau(i)
        Tableau(i) = cell.Offset(0, 3).Value   'Alimente les éléments du tableau
        i = i + 1
        End If
    Next
    Sheets("Feuil2").Select
    Range("A1:A" & i).Value = Application.WorksheetFunction.Transpose(Tableau)  'transpose : mise en colonne les données d'une liste
    Sheets("Feuil1").Select
    Par contre quand je veux ajouter une autre dimension ...
    le but est d'avoir sur la feuille2, trois colonne avec les titres, les clés et les résumés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Dim plage As Range, cell As Range
    Dim wks As Worksheet
    Set wks = Worksheets("Feuil1")
    Set plage = Range("A1:A" & wks.UsedRange.Cells.Count)
    Dim i As Integer, j As Integer
    Dim Tableau() As Variant
    i = 0
    j = 0
    For Each cell In plage
     
        If cell.Value = "TITRE" Then
    j = 0
        ReDim Preserve Tableau(i, j)
        Tableau(i, j) = cell.Offset(0, 3).Value
        i = i + 1
     
        End If
     
        If cell.Value = "KEY" Then
        ReDim Preserve Tableau(i)
        Tableau(i) = cell.Offset(0, 3).Value
        j = j + 1
        End If
     
        If cell.Value = "RESUME" Then
        'Définit la taille du tableau et le type de données.
        ReDim Preserve Tableau(i)
        Tableau(i, j) = cell.Offset(0, 3).Value    'Alimente les éléments du tableau
        j = j + 1
        End If
    Next
    Sheets("Feuil2").Select
    Range("A1:C" & i).Value = Application.WorksheetFunction.Transpose(Tableau)  'transpose : mise en colonne les données d'une liste
    le fichier source qui alimente la colonne 1 est un fichier xml formater comme suit :
    ...
    TITRE mon titre
    KEY ma clé
    RESUME mon résumé
    TITRE mon titre
    KEY ma clé
    RESUME mon résumé
    ...

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    vois ici en III B et dans l'aide vba à redim preserve...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .../...
      ReDim Preserve Tableau(i, j)
    .../...
     ReDim Preserve Tableau(i)
    cordialement,

    Didier

Discussions similaires

  1. [XL-2013] Somme d'un tableau à une dimension vba
    Par cocor500 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 27/11/2014, 17h34
  2. [XL-2000] Alimentation d'un tableau à 1 dimension et 5 colonnes
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 10/02/2014, 13h35
  3. VBA : alimenter tableau PowerPoint 2003
    Par Manu355 dans le forum VBA PowerPoint
    Réponses: 8
    Dernier message: 16/08/2010, 17h05
  4. [XL-2003] vba: Copier un tableau 1 dimension dans une feuille
    Par Gotita dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/09/2009, 18h17
  5. [VBA-E] passer en paramètre un tableau à 2 dimensions
    Par websurfeur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2006, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo