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 :

Imbriquer des variables 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 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Par défaut Imbriquer des variables tableaux
    Bonsoir a tous,
    je cherche desesperement un moyen propre d'obtenir dans une variable (TABL as VARIANT) plusieurs RANGE selectionné.

    un genre de bout de code ressemblant a cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim Montab as VARIANT
     
    MonTab=Feuil1.Range("A1:a9000,C1:C9000,E1:E9000")
     
    msgbox(montab(1,3))
    l'idée etant de prendre que les colonnes intéressantes pour en faire ma base de donnée.

    j'ai bidouillé un truc, mais je pense que qu'on doit assez facilement obtenir mon souhait.
    Merci par avance.
    Thierry.

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu essaies de charger les valeurs d'une plage multizone. Dans ce cas, tu charges seulement les valeurs de la première zone (dans l'ordre de définition de la plage, ici A1: A9000).

    Tu dois obtenir un tableau de 9000 lignes et 1 colonne.

    Tu as 3 possibilités :
    • charger dans 1 variant toutes les colonnes de A à E puis recopier dans un autre tableau A, C et E
    • Charger séparément A, C et E dans 3 variants et recopier dans un tableau unique.
    • charger séparément A, C et E dans 3 variants et travailler avec cela.
    [/LIST]
    Cordialement,

    PGZ

  3. #3
    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,

    tu :
    • fais une copie de ta feuille
    • tu supprimes toutes les colonnes non voulues
    • tu obtiens donc une plage continue que tu met dans un array en une fois
    • tu delete la feuille de passage


    cordialement,

    Didier

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Par défaut
    Merci pour vos reponses,
    Je voies que la manipulation pour arriver a mon resultat en un minimum de commande et en evitant de passer par une autre feuille tampon, l'affaire n'est pas simple.

    Ma solution a été la suivante:
    J'analyse le SET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set RANG=Feuil1.Range("A1:a9000,C1:C9000,E1:E9000")
    afin de trouver le mini, le max des colonnes et des lignes de ce RANG, ici le range total de cette zone est range("A1:E9000") que je mets ds mon tableau

    puis ds une variable, j'y stocke les colonnes souhaitées, ici colonne 1 pour A , 3 pour C et 5 pour E.

    et pour finir, je balaye mon tableau a l'aide d'un jeton, et j'exploite les donnees des que ce jeton correspond a une colonne souhaitée.

    Finalement, je reviens vers vous,
    dans la continuité de mon investigation.

    Un des exemples parlent d'additionner des tableaux entre eux, j'avoue ne pas y arriver.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     tab1 = Feuil1.[A1:A5]
     tab2 = Feuil1.[B1:B5]
    je voudrais un seul tableau de deux colonnes, 1e colonne TAB1 et 2e colonne TAB2

    est il possible d'addtionner les deux tableaux en colonne et non un UNION ?

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour,

    Si tu tiens à avoir un tableau unique, tu peux faire
    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
    Sub Mennix()
    Dim vC, vE, v3 'variants
    Dim i As Long, nbLig As Long
     
    nbLig = 9000
     
    With ThisWorkbook.Worksheets("Feuil1")
        vC = .Range("C1:C" & nbLig).Value
        vE = .Range("E1:E" & nbLig).Value
        v3 = .Range("A1:C" & nbLig).Value
    End With
     
    For i = 1 To nbLig
        v3(i, 2) = vC(i, 1)
        v3(i, 3) = vE(i, 1)
    Next i
     
    vC = Empty
    vE = Empty
     
    'suite ...
     
     
    End Sub
    Mais il y a bien des manières de faire.

    Cordialement,

    PGZ

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 102
    Par défaut
    Merci, je voies que tu refais un balayge des lignes pour les additionner. c'est une piste.
    Venant du delphi, a l'aide des pointeurs j'aurais reglé ce souci.
    bon je vais rester avec mon systeme de jeton
    ou peut etre que le week porte conseil ehehe... bonne fin de journée.
    t

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

Discussions similaires

  1. [Tableaux] Classer des variables en décroissant
    Par Mikiman dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2006, 12h51
  2. Réponses: 3
    Dernier message: 29/06/2006, 17h50
  3. [Tableaux] Syntaxe pour transmettre des variables
    Par kilkikou dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 10h26
  4. Réponses: 21
    Dernier message: 05/02/2006, 17h37
  5. Réponses: 6
    Dernier message: 19/12/2005, 13h41

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