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 :

Tableau dans VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut Tableau dans VBA
    Bonjour,

    J'ai un problème de définition sur ce qu'est un tableau ou du moins le tableau que j'ai créé "ou est il?"

    Je m'explique:
    J'ai un fichier Excel avec une feuille "Eco" dans la quelle j'ai certaines case qui sont remplies (par ex. la cellule C4) que je range dans des variables (par ex: vie_eco)
    pour pouvoir me servir de leurs valeurs dans mon code vba.

    Ici je créé un tableau de dimension 2 avec vie_eco+4 lignes et 18 colonnes
    Mais si je comprend bien (et a voir ce qui se passe dans ma feuille excel lorsque j 'execute ma maccro) ce tableau n'existe que sur vba il n 'est assigné a aucune plage de cellule dans ma feuille
    Donc pour le remplir je parcours le tableau et lui assigne une valeur (par ex: tab_cash(5, 0) = n + 1 (j'ai bien sur donné une valeur a n))

    1)Pour remplir certaines case de mon tableau, j'ai besoin d'utiliser des fonction qui elles memes necessitent "des plages" de valeurs (ex: sum(A1:A5)) mais voila gros problème A1:A5 ca decrit la feuille excel et non mon tableau
    si je fais tab_cash(vie_eco , 17)=Sum(tab_cash(0vie_eco-1),18)) --> ca ne marche pas
    si je fais tab_cash(vie_eco , 17)=Sum(tab_cash(0,18):tab_cash((vie_eco-1),18)) --> ca ne marche pas non plus

    2)Très bien j'ai un tableau remplit sur vba mais comment faire pour qu'il "apparaisse" dans ma feuille excel, genre la premiere cellule de mon tableau tab_cash soit collée sur la cellule H5 de ma feuille excel et que le reste du tableau se colle automatiquement par rapport a cet ancrage


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub cash_flow()
    Worksheets("Eco").Activate
     
    'Déclaration
    Dim vie_eco As Integer
    vie_eco = Range("C4").Value
     
    Dim tab_cash()
    ReDim tab_cash((vie_eco + 4), 18)

    Voilà, toute explication, aide est la bienvenue!

    Merci

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour

    ca n'est pas très clair ton truc la

    bon je pense que quand tu parle de tableau tu parle de variable tableau

    exemple pour remplir une variable tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim montablo as variant 
    montablo=range("A1:D20")
    maintenant on veut lire les cellule de la variable tableau

    se sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for ligne = 0 to ubound(montablo)-1' ici on boucle sur le nombre de ligne de la variable tableau
    for col = 0 to range("A1:D20").columns.count -1'ici on boucle sur le nombre de colonne de la grille excel(c'est forcement le meme que la variable tableau 
    msgbox montablo(ligne,col)
    next
    next
    maintenant si on veut transférer une partie de la grille excel dans un autre onglet par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim montablo as variant 
    montablo=sheets("toto").range("A1:D20")'on rempli la variable avec la plage A1D20 du sheets toto
    'maintenant  on va mettre cette partie de la grille exell du sheets toto dans le sheets titi a partir de la cellule A5 par exemple 
    sheets("titi").range("A5").resize(ubound(montablo),range("A1:D20").columns.count)=montablo
    en fin des exemple on peut t'en faire mais si ton explication n'est pas plus claire ca risque d'être difficile
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim montablo as variant 
    montablo=range("A1:D20")
    Justement la dans la manière dont tu crées le tableau, il est directement alloué a des cases de la feuille excel alors que moi dans la manière dont je déclare mon tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim tab_cash()
    ReDim tab_cash((vie_eco + 4), 18)
    je l'assigne a rien du tout, il n 'est lié a aucune case du fichier excel.

    il est quelque part stocké avec un nombre de ligne et de colonne sans référence d'attache je sais pas si c'est plus clair...
    d'ou mes questions

    je comprend bien ce que tu fais ... ma méthode n'est elle pas correcte?Parcque je le jures je créee bien un tableau dont je peux voir chaque case avec un "MsgBox"

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Pour répondre à ta question ton tableau est déclaré en variable comme te le dit patricktoulon

    et donc il n'est qu'en mémoire !
    si je fais tab_cash(vie_eco , 17)=Sum(tab_cash(0vie_eco-1),18)) --> ca ne marche pas
    si je fais tab_cash(vie_eco , 17)=Sum(tab_cash(0,18):tab_cash((vie_eco-1),18)) --> ca ne marche pas non plus
    Je confirme que ça cela ne peut pas marcher tu mélange une variable (VBA) evec une fonction

    donc pour faire ta somme tu dois récupérer les valeurs contenus dans tes cellules (ou te ton tableau) et les additionner

    exemple (c'est pas le plus élégant mais c'est pour te faire comprendre le principe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_cash(vie_eco , 17)=tab_cash(1, 18)+tab_cash(2, 18)+....+tab_cash(vie_eco , 18)
    Bien evidemment ici l'idéal serait de faire une boucle

    A+

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    j’avoue n’avoir rien compris sur ce que tu veux faire!

    en tous cas si tu déclare un tableau, tu n’aura pas de lien entre celui-ci et ta feuille excel!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test1()
    Dim montablo As Variant 'je déclare un tableau
    montablo = Range("A1:D20")
    End Sub
    si tu déclare une collection de cellules, tu auras un lien entre ta collection et ta feuille Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test2()
    Dim montablo As Range 'je déclare une collection de cellules
    Set montablo = Range("A1:D20")
    End Sub

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Par défaut
    Hum je comprend mieux!

    Dans mon cas, je crée mon tableau en méoire et je remplis chacune des cases en mémoire --> c'est pour cela que je ne peux pas utiliser les fonctions dont les arguments contiennent des plages de tableau (puisque ces plages la ne sont définies que en dur)

    Deux solutions soit je remplis mon tableau en memoire et ensuite je fais comme suggère rdurupt en sens inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Range("A1:D20")=montablo

    Soit j'assigne directement mon tableau a une plage de cellules et dans ce cas je peux utiliser les fonction déjà définies dans excel


    Je pense avoir compris mon problème

    Merci a tous

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

Discussions similaires

  1. [XL-2007] Variables tableau dans VBA Excel
    Par abdel792 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/02/2011, 11h17
  2. [VBA-E] récupération selection tableau dans variable
    Par garsdu51 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/02/2007, 08h04
  3. [VBA-E] Plantage lors de l'encadrement d'un tableau dans excel
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/01/2007, 16h03
  4. [VBA-E] Problème de tableau dans macro VBA
    Par Chouls dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2006, 15h20
  5. [VBA][WORD]Identifier un tableau dans un document
    Par mister3957 dans le forum VBA Word
    Réponses: 15
    Dernier message: 10/01/2006, 13h56

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