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 :

Information sur les tableaux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut Information sur les tableaux
    Re bonjour le forum,

    Je souhaite avoir des informations concernant les tableau SVP.

    si je definie un tableau par le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim Rcontact() As Variant
    dim WB as Workbook
    Dim TreatedFile As Workbook
     
    Rcontact() = TreatedFile.Worksheets(1).Range("A2.E2").Value
    Mon tableau va "être" une ligne. Est-il ensuite possible de copier les valeurs en colonne?
    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WB.Worksheets(1).Range("A2:A5").Value = Rcontact()
    J'ai déjà essayé, mais ça me copie uniquement les premiers valeurs du tableau dans toute la colonne

    Autre question, est il possible de remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WB.Worksheets(1).Range("A2:A5").Value = Rcontact()
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WB.Worksheets(1).Range(Cells(1,1), Cells(1,5)).Value = Rcontact()
    A chaque fois que je le tente (avec ou sans point devant le "cells"), j'ai une erreur (1004, 438...)

    Merci de votre aide,
    johann

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Rcontact = TreatedFile.Worksheets(1).Range("A2.E2").Value
    TreatedFile.Worksheets(1).Range("A2:A6") = Application.WorksheetFunction.Transpose(Rcontact)
    ++
    Minick

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    une autre solution à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Base 1
    Sub essai()
    Dim Rcontact(5) As Variant, x As Integer
    Dim WB As Workbook
     
    For x = 1 To 5
    Rcontact(x) = Cells(1, x)
    Range("f" & x + 1) = Rcontact(x)
    Next x
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Pour la seconde partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With WB.Worksheets(1)
       .Range(.Cells(1,1), .Cells(1,6)).Value = Application.WorksheetFunction.Transpose(Rcontact)
    End With
    ++
    Minick

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Merci Minick pour les infos...
    Concernant le transpose, j'avais pas pensé et je ne savais pas que l'on pouvais l'appliquer aux tableaux.

    Pour la seconde partie, on est donc obligé de faire une boucle with??

  6. #6
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Ce n'est pas une boucle With

    C'est juste pour faciliter l'ecriture et la lecture.

    Dans ton cas
    With WB.Worksheets(1)

    permet de ne pas resaisir WB.Worksheets(1)
    a chaque fois que tu dois utiliser une des proprietes ou methode de celui ci
    il suffit juste de commencer par un point (.).
    Et cela jusqu'a rencontrer le End With

    Pour des infos plus completes F1 sur With

    ++
    Minick

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Par défaut
    Re,

    Merci pour tes informations Minick.
    Cependant, je savais déjà "à quoi sert" le with.
    Ce que je souhaite comprendre,
    c'est pourquoi cela fonctionne avec la boucle with, donc avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Rcontact = TreatedFile.Worksheets(1).Range("A2.E2").Value
    With WB.Worksheets(1)
       .Range(.Cells(1,1), .Cells(1,6)).Value = Application.WorksheetFunction.Transpose(Rcontact)
    End With
    et pas avec ce code (avec la présence ou non de point devant le "cells" (si je comprends bien l'aide, ils ne sont pas nécessaires car le classeur actif dans le code suivant est "WB")):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WB.Worksheets(1).Range(.Cells(1,1), .Cells(1,6)).Value = Application.WorksheetFunction.Transpose(Rcontact)
    Sans la boucle with, j'ai une erreur 1004....

    Moi, pas comprendre!!

    Merci pour tes renseignements,
    johann

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

Discussions similaires

  1. Informations sur les langages/outils de ce forum
    Par Idelways dans le forum Autres langages
    Réponses: 3
    Dernier message: 14/02/2018, 12h08
  2. Réponses: 6
    Dernier message: 28/04/2004, 10h41
  3. Article sur les tableaux dynamiques
    Par Eric Sigoillot dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2004, 22h00
  4. Informations sur les procédures stockées
    Par jfphan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/01/2004, 14h30

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