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 :

Simplifier le code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Par défaut Simplifier le code
    Bonjour à tous,

    voila,je voulais savoir si cela etait possible
    d'ameliorer mon code
    sur une feuille, j'ai 10 boutons sur une ligne differente à chaque fois (ligne 9 à 19)
    ce bouton ouvre un useform dans lequel il y a ceci comme 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Private Sub Valider_Click()
     
      If CheckBox1.Value = True Then 'Si coché ...
           Range("f9") = "NOK"
        Else 'Si non coché ...
           Range("f9") = "OK"
        End If
     
      If checkbox2.Value = True Then 'Si coché ...
           Range("g9") = "NOK"
        Else 'Si non coché ...
           Range("g9") = "OK"
        End If
     
      If CheckBox3.Value = True Then 'Si coché ...
           Range("h9") = "NOK"
        Else 'Si non coché ...
           Range("h9") = "OK"
        End If
     
      If CheckBox4.Value = True Then 'Si coché ...
           Range("i9") = "NOK"
        Else 'Si non coché ...
           Range("i9") = "OK"
        End If
     
    Range("j9").FormulaLocal = "=aujourdhui()"
    Unload Me 'Fermeture
     
    End Sub
    donc j'ai actuellement 10 userform differents pour chacun de mes boutons pour chaque ligne.

    ma question est simple
    y a-t-il un autre moyen pour utiliser un seul userform pour tous mes boutons ?

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    En changeant le nom de la feuille :

    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
    Private Sub Valider_Click()
     
    For i = 1 To 10
        If Sheets("Feuil1").CheckBox1.TopLeftCell.Row = i + 8 Then 'Si coché ...
            Range("f9").Offset(, i - 1) = "NOK"
        Else 'Si non coché ...
            Range("f9").Offset(, i - 1) = "OK"
        End If
    Next i
     
    Range("j9").FormulaLocal = "=aujourdhui()"
    Unload Me 'Fermeture
     
     
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Par défaut
    voici ma feuille, car j'ai rentré ton code, cela affiche des messages d'erreur et je ne crois pas que cela fasse ce que je veux.

    sur le fichier tu vois, le principe qui faut que je reproduise pour toutes les lignes.

    et j'aimerais utiliser un seul userform pour le bouton NOK plutot que t'en faire une 100 ene.

    pareil pour le bouton OK et clear.

    merci
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Il est où, le bouton "Valider" ? et la macro qui va avec ?

  5. #5
    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
    Bonjour
    je suis aller au plus simple
    suprime les 2 emes bouton garde en 1 seul de chaque
    garde le ok1 ,nok1,clear1 ect...

    dans le module de tafeuille ta feuil CL33 es
    remplace la macro
    Private Sub OK1_Click()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub OK1_Click()
    Range("f" & ActiveCell.Row & ":I" & ActiveCell.Row) = "OK"
    'Range("F9") = "OK"
    'Range("G9") = "OK"
    'Range("H9") = "OK"
    'Range("I9") = "OK"
    Range("j" & ActiveCell.Row).FormulaLocal = "=aujourdhui()"
    End Sub
    voila pour les bouton de la feuille
    maintenant dans le module du userform"CL33validation1 tu efface tout le code et tu met ceci:
    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
    Private Sub CommandButton1_Click()
     
      If CheckBox1.Value = True Then 'Si coché ...
           Range("f" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("f" & ActiveCell.Row) = "OK"
        End If
     
      If CheckBox2.Value = True Then 'Si coché ...
            Range("g" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("g" & ActiveCell.Row) = "OK"
        End If
     
      If CheckBox3.Value = True Then 'Si coché ...
           Range("h" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("h" & ActiveCell.Row) = "OK"
        End If
     
      If CheckBox4.Value = True Then 'Si coché ...
            Range("h" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("h" & ActiveCell.Row) = "OK"
        End If
     
     Range("j" & ActiveCell.Row).FormulaLocal = "=aujourdhui()"
    Unload Me 'Fermeture
     
    End Sub
    maintenant tu fait pareil pour le deuxieme userform tu eface tout dans le module et tu met ceci:
    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
    Private Sub CommandButton1_Click()
     
      If CheckBox1.Value = True Then 'Si coché ...
            Range("f" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("f" & ActiveCell.Row) = "OK"
        End If
     
      If CheckBox2.Value = True Then 'Si coché ...
            Range("g" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("g" & ActiveCell.Row) = "OK"
        End If
     
      If CheckBox3.Value = True Then 'Si coché ...
            Range("h" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("h" & ActiveCell.Row) = "OK"
        End If
     
      If CheckBox4.Value = True Then 'Si coché ...
            Range("i" & ActiveCell.Row) = "NOK"
        Else 'Si non coché ...
            Range("i" & ActiveCell.Row) = "OK"
        End If
     
     Range("j" & ActiveCell.Row).FormulaLocal = "=aujourdhui()"
    Unload Me 'Fermeture
     
    End Sub
    voila tout simplement maintenant si tu veux modifier une ligne il te suffit de selectionner la ligne sur ta grille et cliquer sur le bouton de ton choix
    voili voilou

    je ne l'ai pas fait pour les bouton "clear..." je te laisse mediter quand a la marcha a suivre mais tu devrais saisir la chose tres vite a mon avis
    Au plaisir

    Re
    je dirais meme que tu a besoins aue d'un seul de tes userforms maintenant

    Au plaisir

    Re
    je revien aussi pour souligner une erreur de taille dans ton code

    tu met a la validation ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("j" & ActiveCell.Row).FormulaLocal = "=aujourdhui()"
    hors si demain tu réouvre le fichier les dates seront mis a jour automatiquement donc ne corespondront plus au dates de controles réels

    donc je remplacerais par ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("j" & ActiveCell.Row).FormulaLocal = Date
    ainsi la date inscrite sera fixe

    Au plaisir
    veux tu que je te renvoie un exemplaire de ton fichier corrigé???
    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

  6. #6
    Membre averti
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Par défaut
    Daniel le bouton valider est dans l'userform du bouton NOK

Discussions similaires

  1. [E-00] Utilisation d'un auxilliaire pour simplifier le code
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 21/11/2008, 17h31
  2. Simplifier le code
    Par Msieurduss dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h07
  3. Réponses: 4
    Dernier message: 10/05/2008, 12h31
  4. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 17h05
  5. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15

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