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 :

Transférer le contenu d'un tableau dans une feuille de calcul - Une seule dimension [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut Transférer le contenu d'un tableau dans une feuille de calcul - Une seule dimension
    Bonjour,

    Je souhaiterais suivre la procédure décrite dans l'article Utiliser les variables tableaux en VBA Excel pour Transférer le contenu d'un tableau dans une feuille de calcul, mais avec seulement une seule dimension.

    En adaptant le code, j'obtiens ceci :
    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
            Dim x As Integer
            Dim i As Integer
            Dim NomTableau() As String
     
     
            'Redéfinit la taille du tableau
            x = 10
            ReDim NomTableau(1 To x)
     
            'Alimente les éléments du tableau
            For i = 1 To x
                    NomTableau(i) = i
            Next i
     
            'Transfère les éléments du tableau dans la feuille de calcul
            Set Cl = Workbooks.add
            Cl.Sheets(1).Range(Cells(1, 1), _
                Cells(UBound(NomTableau, 1), 1)) = NomTableau
    Mais je n'ai que des 1 au lieu d'avoir une série de 1 à 10 !

    Comment est-ce que ça se fait?

    Cordialement

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a lieu de transposer la variable tableau nommée NomTableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cl.Sheets(1).Range(Cells(1, 1), _
      Cells(UBound(NomTableau, 1), 1)).Value = Application.Transpose(NomTableau)
    [EDIT]
    Même si dans un nouveau classeur à une seule feuille ce n'est obligatoire, je préfère publier un code correct. Il y a lieu de rattacher les deux objets Cells à leur parent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Set cl = Workbooks.Add
      With cl.Sheets(1)
      .Range(.Cells(1, 1), .Cells(UBound(NomTableau, 1), 1)).Value = Application.Transpose(NomTableau)
      End With
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 184
    Par défaut
    Bonjour,

    En effet, ça fonctionne Merci !

    Pour comprendre :

    Est-ce qu'on sait pourquoi il faut utiliser la commande Application.Transpose?

    Elle ne devrait pas juste inverser le sens du tableau (vertical à horizontal et l'inverse)?

    En utilisant cette commande sur le code originel avec le tableau à 2 dimensions, j'obtiens le résultat étrange suivant :

    01.janv 01.févr 01.mars 01.avr 01.mai
    02.janv 02.févr 02.mars 02.avr 02.mai
    03.janv 03.févr 03.mars 03.avr 03.mai
    04.janv 04.févr 04.mars 04.avr 04.mai
    05.janv 05.févr 05.mars 05.avr 05.mai
    #N/A #N/A #N/A #N/A #N/A
    #N/A #N/A #N/A #N/A #N/A
    #N/A #N/A #N/A #N/A #N/A
    #N/A #N/A #N/A #N/A #N/A
    #N/A #N/A #N/A #N/A #N/A

    Est-ce qu'on sait pourquoi?

    Si vous êtes inspiré de répondre, c'est bien volontiers.
    Sinon pas grave, l'essentiel est que ça fonctionne.

    Merci encore!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/12/2015, 16h16
  2. [MySQL] Chercher le contenu d'un tableau dans une table MySQL et jointure
    Par javagirl08 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 19/08/2009, 13h40
  3. [Toutes versions] Copier le contenu d'un tableau dans une feuille de calcul
    Par Heureux-oli dans le forum Contribuez
    Réponses: 0
    Dernier message: 25/04/2009, 20h08
  4. afficher contenu d'un tableau dans une zone de texte
    Par michaellynx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/12/2008, 13h35
  5. Réponses: 6
    Dernier message: 27/09/2006, 20h27

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