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 :

table de corespondance en vba calcul automatique [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Par défaut table de corespondance en vba calcul automatique
    Bonjour,

    je voudrais que le calcule se fasse automatiquement se fasse via une table je m'explique
    actuellement via un userform une sélection d' option buttons donne le résultat de 2 note
    a cela j'ai une une formule sur ma feuille recap en colonne M et N qui donne 2 états ,mais j'ai des problèmes pour la note finale qui sera A ou B ou C
    je pense que pour tout cela passé pas une table de correspondance serai le mieux mais je n'y arrive pas ,et surtout cela évitera a qui que se soit efface le formules

    calcule des notes' via mon userform et option buttons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub CommandButton2_Click()
     
    TextRESUETAT = (CDbl(TextBox1.Value) * CDbl(TextBox2.Value) * CDbl(TextBox3.Value))
    TextRESUCRIT = (CDbl(TextBox4.Value) * CDbl(TextBox5.Value) * CDbl(TextBox6.Value))
     
    Set ws = Sheets("Donné équipement")
    l = ws.Cells.Find(ComEQUI.Value, , , xlWhole).Row
    ws.Range("i" & l).Value = TextRESUETAT
    ws.Range("j" & l).Value = TextRESUCRIT
     
    End Sub
    la table est la suivante
    si mauvais et faible la note est b
    si mauvais et moyenne la note est c
    si mauvais et forte la note est c
    si usuel et faible la note a
    si usuel et moyenne la note b
    si usuel et forte la note b
    si bon et faible la note a
    si bon et moyenne la note a
    si bon et forte la note a

    merci de votre aide pour ce sujet

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à toi,
    Bonjour au Forum,

    Pour y voir plus clair, peux-tu retourner un exemplaire simplifié (avec peu d'enregistrements) de ton fichier avec le code complet affecté à ton formulaire.
    Et, s'il te plaît, nomme tes contrôles
    exemple : Txt_lanote1

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Par défaut
    trouvez ci joint mon fichier
    https://mon-partage.fr/f/Cg1zNfOW/

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Pour faire "propre"
    - en incluant les 2 notes intermédiaires et en calculant la note finale (a, b, c).
    - la variable ws ne sert à rien
    - j'ai renommé ton bouton
    - il est préférable, pour plus de lisibilité, de nommer les contrôles en les préfixant de 2 ou 3 lettres qui en évoquent la nature suivies de "_"
    exemple : Txt_lemachin, Opt_monoption, Cbx_choix1....

    - la solution à ta question est l'utilisation de la méthode

    que je te laisse compléter

    Une recommandation :
    Etant donné le nombre d'évènements affectés aux mêmes types de contrôles, il te serait utile d'aborder, quand tu y seras disponible, les modules de classe.

    Etudie bien le code suivant, ligne par ligne, et reviens si nécessaire

    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
    'enregistrement et protection blocage des donnees'
     
    Private Sub Btn_maj_feuille_Click()
     
    Dim l_info As Integer
    Dim note_1 As String, note_2 As String, lanote As String
     
     
    With ThisWorkbook.Worksheets("TABLEAU RECAP")
            l_info = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
            .Range("B" & l_info).Value = ComEQUI 'libelle equipement'
            .Range("c" & l_info).Value = Textlocal 'code local"
            .Range("D" & l_info).Value = ComRESP 'Nom du responsable'
            .Range("E" & l_info).Value = TextDATEAM 'date du constat'
            .Range("F" & l_info).Value = TextMISE 'date de mise en service'
            .Range("G" & l_info).Value = CInt(TextDUREVIE.Value)  'Duree de vie theorique'
            .Range("H" & l_info).Value = TextREMPL 'Date theorique de remplacement '
            .Range("I" & l_info).Value = CInt(TextDURVIERESI.Value)  'Duree de vie residuelle '
            .Range("J" & l_info).Value = TextESTIMREMPL 'Duree de vie residuelle '
            .Range("K" & l_info).Value = CInt(TextRESUETAT.Value) 'note de etat equipement'
            .Range("l" & l_info).Value = CInt(TextRESUCRIT.Value) 'note de criticite equipement'
     
             With .Range("M" & l_info)
                    'formulation
                    .FormulaR1C1 = "=IF(RC[-2]<=21,""Mauvais"",IF(RC[-2]<=43,""Usuel"",IF(RC[-2]<=64,""Bon"")))"
                    'équivaut à un collage spécial valeur (merci au grand mercatog)
                    .Value = .Value
                    note_1 = .Value
             End With
     
             With .Range("N" & l_info)
                    'formulation
                    .FormulaR1C1 = "=IF(RC[-2]<=21,""Faible"",IF(RC[-2]<=43,""Moyenne"",IF(RC[-2]<=64,""Forte"")))"
                    'équivaut à un collage spécial valeur (merci au grand mercatog)
                    .Value = .Value
                    note_2 = .Value
             End With
     
            Select Case True
                        Case note_1 = "Mauvais" And note_2 = "Faible"
                                lanote = "b"
                        Case note_1 = "Mauvais" And note_2 = "Moyenne"
                                lanote = "c"
                         'etc...
            End Select
     
            .Range("O" & l_info).Value = lanote
            .Range("P" & l_info).Value = TextCOMM 'texte dans commentaire
     
     End With
     
    Me.hide
    Unload Me
     
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 110
    Par défaut
    merci beaucoup cela marche

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    D'accord.
    Aucune question sur les notions abordées?.....
    Place cette discussion en "Résolue" et bonne chance pour la suite.

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

Discussions similaires

  1. [Table / VBA] Addition automatique des champs
    Par NiKoTiNe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/05/2007, 09h59
  2. [VBA-E] Calcul Automatique Date
    Par nono le golfeur dans le forum Excel
    Réponses: 7
    Dernier message: 03/04/2007, 16h38
  3. [VBA Excel] Calcul automatique
    Par trihanhcie dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/02/2007, 09h16
  4. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53
  5. [VBA] Attache automatique des tables
    Par bestall666 dans le forum Access
    Réponses: 4
    Dernier message: 14/05/2005, 12h42

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