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 :

Afficher un tableau de variable sur une page excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Points : 56
    Points
    56
    Par défaut Afficher un tableau de variable sur une page excel
    Bonjour à tous,

    je bloque sur une chose surement très bête mais je n'arrive pas à voir le problême. En fait, j'enregistre dans un tableau(sous VBA) des variables et je souhaiterais ensuite retranscrire ce tableau sur ma page excel mais cela ne prend que la première valeur du tableau :/

    Voila mon code :

    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
     
    Sub General()
    Dim TabFigureGM As Variant, TabTemplateGM As Variant, cmpt1 As Long, cmpt2 As Long
    TabFigureGM = Feuil1.Range("G6:N" & Feuil1.Cells(60000, 7).End(xlUp).Row).Value
    TabTemplateGM = Feuil2.Range("A2:C433").Value
    Dim TabTemp (1 to 432)
     
     
    For cmpt1 = LBound(TabTemplateGM, 1) To UBound(TabTemplateGM, 1)
    Nbr = 0
        For cmpt2 = LBound(TabFigureGM, 1) To UBound(TabFigureGM, 1)
            If (Month(TabTemplateGM(cmpt1, 3)) = Month(TabFigureGM(cmpt2, 1))) And (Year(TabTemplateGM(cmpt1, 3)) = Year(TabFigureGM(cmpt2, 1))) Then
                If (TabTemplateGM(cmpt1, 1) = TabFigureGM(cmpt2, 2)) And (TabTemplateGM(cmpt1, 2) = TabFigureGM(cmpt2, 4)) Then
                       Nbr = Nbr + TabFigureGM(cmpt2, 7)
                End If
            End If
        Next cmpt2
    TabTemp(cmpt1) = Nbr
    Next cmpt1
        Feuil2.Range("H2:H433").Value = TabTemp
    End Sub
    Merci pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Blaiz58,

    Tes variables TabFigureGM et TabTemplateGM ont des LBound et des UBound identiques puisque tu ne les définies pas en tant que tableau.
    Donc, c'est normal que tu n'ai qu'une seule valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim TabFigureGM() As Variant, TabTemplateGM() As Variant
    Si tu fais des ReDim sur ces-derniers après.
    Ou assigne directement ton nombre de valeurs comme ton TabTemp.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Points : 56
    Points
    56
    Par défaut
    J'ai fais des ReDim mais je n'ai toujours que une seule valeur qui en ressort du tableau TabTemp

    Mais si je regarde 1 par 1 les valeurs du tableau TabTemp, je les ai bien toutes dedans ...

    Voila le code que j'ai refait du coup.

    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
    Sub General()
    Dim TabFigureGM As Variant, TabTemplateGM As Variant, cmpt1 As Long, cmpt2 As Long
    ReDim TabFigureGM(1 To Feuil1.Cells(60000, 7).End(xlUp).Row - 5, 1 To 8)
    ReDim TabTemplateGM(1 To 432, 1 To 3)
    TabFigureGM = Feuil1.Range("G6:N" & Feuil1.Cells(60000, 7).End(xlUp).Row).Value
    TabTemplateGM = Feuil2.Range("A2:C433").Value
    Dim TabTemp (1 to 432)
     
     
    For cmpt1 = LBound(TabTemplateGM, 1) To UBound(TabTemplateGM, 1)
    Nbr = 0
        For cmpt2 = LBound(TabFigureGM, 1) To UBound(TabFigureGM, 1)
            If (Month(TabTemplateGM(cmpt1, 3)) = Month(TabFigureGM(cmpt2, 1))) And (Year(TabTemplateGM(cmpt1, 3)) = Year(TabFigureGM(cmpt2, 1))) Then
                If (TabTemplateGM(cmpt1, 1) = TabFigureGM(cmpt2, 2)) And (TabTemplateGM(cmpt1, 2) = TabFigureGM(cmpt2, 4)) Then
                       Nbr = Nbr + TabFigureGM(cmpt2, 7)
                End If
            End If
        Next cmpt2
    TabTemp(cmpt1) = Nbr
    Next cmpt1
        Feuil2.Range("H2:H433").Value = TabTemp
    End Sub

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Sans avoir analyser, as-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Range("H2").Resize(UBound(TabTemp, 1)) = TabTemp
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Range("H2:H433").Value = Application.Transpose(TabTemp)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  5. #5
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par Blaiz58 Voir le message
    J'ai fais des ReDim mais je n'ai toujours que une seule valeur qui en ressort du tableau TabTemp

    Mais si je regarde 1 par 1 les valeurs du tableau TabTemp, je les ai bien toutes dedans ...
    Je dois avouer que je ne sais pas trop la faisabilité de "coller" l'ensemble des valeurs d'un tableau sur une plage.
    Un plus expert pourra peut-être proposer une méthode.

    Je te propose donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 to 432
        Feuil2.Range("H1").Offset(i, 0) = TabTemp(i)
    Next i
    Ceci fonctionnera forcément.

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Blaiz58, Kimy, c'est juste un problème d'observation et donc de logique !
    Suffit d'affecter une plage de cellules à une variable non déclarée (donc de type Variant) puis de regarder dans
    la fenêtre des Variables locales : une plage de cellules correspond à un tableau à deux dimensions comme la propriété Cells.

    Donc lorsqu'une variable tableau n'a qu'une dimension, il faut bien la transposer pour l'afficher en colonne …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    ce que j'ai proposé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Range("H2").Resize(UBound(TabTemp, 1)) = TabTemp
    devrait fonctionner, je n'ai pas vu la variable Nbr déclarée, j'en déduit que "Option Explicit" n'a peu-être pas été spécifié
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  8. #8
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Points : 56
    Points
    56
    Par défaut
    Ta 2ème solution fonctionne casefayere Merci beaucoup.

    Marc-L, pour répondre à ta question, j'ai rien dans variable locale.

    Merci Kimy_Ire pour ton aide. Oui j'avais pensé à cette solution mais ça alourdissait un peu le code.

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Alors, celle-ci aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Range("H2").Resize(UBound(TabTemp, 1)) = Application.Transpose(TabTemp)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur 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...)

  10. #10
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 66
    Points : 56
    Points
    56
    Par défaut
    Effectivement, elle fonctionne également ! C'est d'ailleur celle que je vais retenir au cas où les dimensions du tableau bougeraient.

    Merci beaucoup

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

Discussions similaires

  1. supprimer une variable sur une page
    Par mipou dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2009, 15h09
  2. effacer des variables sur une page web
    Par mipou dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2009, 20h19
  3. Réponses: 3
    Dernier message: 25/09/2008, 19h17
  4. Réponses: 2
    Dernier message: 03/01/2008, 12h42
  5. [MySQL] Afficher du texte UTF-8 sur une page encodée en ISO
    Par MiJack dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2006, 18h37

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