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 :

Faire une addition de chiffre entre multipage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 31
    Par défaut Faire une addition de chiffre entre multipage
    Bonjour à tous,

    J'ai un petit soucis sur mon code. Je suis en école d'ingé et je dois réaliser une petite application sur vba.
    J'ai créé une multipage avec 4 pages différentes (jusqu'ici tout va bien). Ensuite j'ai en parallèle mis des prix sur des tableaux excel correspondant aux choix des produits que je montre sur mes multipages.
    Les prix s'affichent nickel et tout est ok. Le soucis c'est que je dispose de 4 pages dans ma multipage et je n'arrive pas à additionner les prix lorsque je change de page.
    Actuellement j'arrive juste à additionner les prix sur une page de mon mutlipage (avec mes differents optionbutton) mais je n'arrive pas à transférer le prix de la page précédente sur la page suivante. Je ne sais pas si tout est clair..
    A savoir, je fais apparaître mon prix dans un label.
    Avez-vous une idée pour m'éclairer ?

    Voici un bout de mon code qui me permet d'afficher les prix sur mes multipage :


    '
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '01 CHASSIS''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
    Private Sub ComboBox2_Change()
     
    Dim PrixMontage As Double, Prix_64 As Double, Prix_62 As Double    'Afficher le prix des chassis
     
    OptionButton14 = True                                        'Remmettre sur configuration 6*2 à chaque changement de véhicule
    Me.Frame5.Visible = True
     
    Call Module2.RechPrixOPTIMA(ComboBox2.Value, _
                   PrixMontage, Prix_64, Prix_62)
    Me.Label39.Caption = "Prix : " & Format(PrixMontage, "## ###.00 €")
    End Sub
    Private Sub OptionButton14_Click()
    Image2.Picture = Feuil6.Image5.Picture
    Dim PrixMontage As Double, Prix_64 As Double, Prix_62 As Double    'Afficher prix avec option chassis 6*4
    Call Module2.RechPrixOPTIMA(ComboBox2.Value, _
                   PrixMontage, Prix_64, Prix_62)
     If OptionButton14 = True Then
        Me.Label39.Caption = "Prix : " & Format(PrixMontage + Prix_62, "## ###.00 €")
        End If
     
    End Sub
     
    Private Sub OptionButton13_Click()
    Image2.Picture = Feuil6.Image4.Picture
    Dim PrixMontage As Double, Prix_64 As Double, Prix_62 As Double       'Afficher prix avec option 6*2
    Call Module2.RechPrixOPTIMA(ComboBox2.Value, _
                   PrixMontage, Prix_64, Prix_62)
        If OptionButton13 = True Then
        Me.Label39.Caption = "Prix : " & Format(PrixMontage + Prix_64, "## ###.00 €")
     
        End If
    End Sub
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '02 BRAS'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Sub OptionButton7_Click()
        If OptionButton7 = True Then                              'Afficher le poids de l'OPTIMA+ 46
        Me.Label26.Visible = True
        End If
            Dim PrixOptima As Double
            Dim Verrouillage_avant As Double
            Dim Installation_PMT As Double
            Dim Crochet_fixe As Double
            Dim Crochet_pneumatique As Double
     
            Call Module3.RechOPTIMA(OptionButton7.Caption, _
            PrixOptima, Verrouillage_avant, Installation_PMT, Crochet_fixe, Crochet_pneumatique)
            If OptionButton7 = True Then
            Me.Label40.Caption = "Prix : " & Format(PrixOptima, "## ###.00 €")
            End If
    End Sub


    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Par défaut
    Bonjour,

    On a du vous dire pendant vos cours de C de structurer votre code :
    1) La déclaration de variable se fait habituellement en début de procédure
    2) on met des tabulations pour structurer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If DossierExiste(Fichier) Then
            Feuille = "Global$"
    Else
            Feuille = "Début$"
    End if
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If DossierExiste(Fichier) Then
    Feuille = "Global$"
    Else
    Feuille = "Début$"
    End if
    Ensuite pour votre problème, il suffit d'utiliser les événements dispo pour l'objet Multipage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub MultiPage1_Change()
        Select Case Me.MultiPage1.Value
            Case 0
                'dans le cas où on sélectionne le 1° onglet
            Case 1
                'dans le cas où on sélectionne le 2° onglet
            Case 2
                'dans le cas où on sélectionne le 3° onglet
            'etc.
        End Select
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 31
    Par défaut
    Bonjour Many31,

    Dans un premier temps merci pour ta réponse. En effet mon code est mieux structuré car en faisant le copier coller de ma feuille excel, le message n'a pas pris en compte les espaces.
    Par ailleurs je vois ce que tu veux dire avec l'outil case, mais que faut-il mettre dedans ? Le code que j'ai fait précédemment?
    Je débute en VBA désolé de ne pas être très performant.

  4. #4
    Membre éprouvé Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Par défaut
    Pouvez vous être plus clair?

    J'ai créé une multipage avec 4 pages différentes (jusqu'ici tout va bien). Ensuite j'ai en parallèle mis des prix sur des tableaux excel correspondant aux choix des produits que je montre sur mes multipages.
    Les prix s'affichent nickel et tout est ok. Le soucis c'est que je dispose de 4 pages dans ma multipage et je n'arrive pas à additionner les prix lorsque je change de page.
    Les prix s'affichent dans quoi? quelle addition (en gros faut il sélectionner un prix dans la page 1 pour après aller sur la page2?)

    Les pages d'un multipage sont "virtuelles" à savoir que pour accéder à un objet d'une page ou d'une autre, la page en elle même n'est pas discriminante (en gros les objets de chaque page, ont toujours leur "chemin d'accès" par le Userform : exemple pour une Combobox1 dans la page 1 on écrira : Userform1.Combobox1 et non Userform1.Multipage1.Page(0).combobox1)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 31
    Par défaut
    Le top serait une formule similaire pour prendre la valeur affichée dans le label et la transférer dans un autre label mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label45.Caption = val(Me.Label40.Caption) + val(Me.Label41.Caption) + val(Me.Label42.Caption) + val(Me.Label43.Caption) + val(Me.Label44.Caption)
    En fait lorsque l'utilisateur choisi un modèle, un prix s'affiche dans un premier label situé sur la feuille 1 (voir photo) puis l'utilisateur choisi optima49 ou optima 51... et le prix de l'optima s'ajoute au précédent prix qui était affiché dans le label situé en page 1. Un label "prix" est toujours situé en bas à droite pour voir le prix dès que l'on ajoute une option
    Images attachées Images attachées   

  6. #6
    Membre éprouvé Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Par défaut
    C'est un peu trivial mais en gros je vous conseillerais d'utiliser une variable commune de type tableau avec pour dimension le nombre de label que vous avez.
    Variable à placer tout en haut de votre module (en dehors des Sub / Function)

    Ca devrait donner ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public MatLabel(50) as Double
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     '01 CHASSIS''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     Private Sub ComboBox2_Change()
    'etc.

    Ensuite dans votre code, à chaque fois que vous renseignez un prix dans un label, stockez ce même prix dans le tableau
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MatLabel(2) = PrixMontage + Prix_64
    Ce sera plus simple pour faire vos additions puisque ca donnera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MatLabel(45) = MatLabel(40) + MatLabel(41) + MatLabel(42) + MatLabel(43) + MatLabel(44) 
    Label45.Caption = "Prix : " & Format(MatLabel(45) , "## ###.00 €")
    pour une addition de tous les autres prix par exemple, utiliser une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 to Ubound(MatLab)
        if i <> 45 then MatLabel(45) = MatLabel(45) + MatLabel(i)
    next
    Par contre je comprends pas votre sub Module2.RechPrixOPTIMA()
    Pourquoi ne pas utiliser une fonction afin de retourner directement la valeur?

    Citation Envoyé par seblafrite Voir le message
    Le top serait une formule similaire pour prendre la valeur affichée dans le label et la transférer dans un autre label mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label45.Caption = val(Me.Label40.Caption) + val(Me.Label41.Caption) + val(Me.Label42.Caption) + val(Me.Label43.Caption) + val(Me.Label44.Caption)
    Pour que cela marche il faudrait que vous viriez le texte "Prix : " dans le Caption :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Val(Replace(Me.Label41.Caption, "Prix : ", ""))

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 31
    Par défaut
    J'ai essayé de faire ce que vous m'avez dit avec les label, mais ça ne marche pas. Je pense que je dois mal placer les informations.
    De base le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public MatLabel(50) as Double
    Ne fonctionne pas...

  8. #8
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Par défaut
    Une solution :
    Pourquoi ne pas mettre le control Label Prix en dehors du control Multipage, mais bien sûr toujours dans le Formulaire.

Discussions similaires

  1. XI - Extraire une somme dans une periode pour faire une addition
    Par campia dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 06/12/2007, 16h41
  2. Je ne sais pas faire une addition ?
    Par sam80 dans le forum Delphi
    Réponses: 8
    Dernier message: 18/04/2007, 15h13
  3. Faire une addition, mais à l'horizontal
    Par deejay2221 dans le forum Access
    Réponses: 4
    Dernier message: 10/06/2006, 08h56
  4. Requête pour faire une addition sur autres requêtes
    Par guenfood dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/06/2006, 18h35
  5. Faire une addition en asp
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 29/11/2004, 15h25

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