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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Points : 27
    Points
    27
    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 éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    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
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Points : 27
    Points
    27
    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 éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Il est où, le bouton "Valider" ? et la macro qui va avec ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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
    Nouveau membre du Club
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    Daniel le bouton valider est dans l'userform du bouton NOK

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    ta programmation est niquel,
    c'est ce que je pensais faire au debut dans ce principe la,
    mais il me faut pour chaque ligne les 3 boutons.

    Donc si 100 lignes, 100 ok 100 nok et 100 clear. ce qui m'embete le plus c'est le bouton nok car je me vois pas faire 100 userform...

    y a-t-il un moyen pour eviter sa ?

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    j'ai regardé de plus pret ton fichier dans son intégralité

    je vois a peut pres ce que tu veux faire

    en fait tu a besoins que du userform puis que par les checkbox tu gere le ok ou nok

    donc tout tes boutons ne sont pas necessaires

    je le remanie un peu avec une aide visuelle (selection de la ligne qui aparrait en rouge et redevient blanche quand on la quitte ) je reviens dans dix minutes
    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

  9. #9
    Nouveau membre du Club
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    en faite, je voudrais utiliser cela sur ma tablette ( compatible excel ^^)

    comme cela, quand je fait les controle,
    j'ai juste besoin d'appuyer sur ok quand tout est bon.
    si j'ai un souci j'appuie sur nok
    et si j'ai fait une erreur j'efface uniquement la ligne.

    c'est pour cela, avec une tablette, je trouvais plus pratique et plus rapide d'avoir pour chaque point les 3 boutons.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Elle sais lire les macros, ta tablette ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    voila je me suis un peu amusé

    tu a un seul userform

    quand tu est sur une ligne elle deviens verte pour te montrer la ligne selectionnée

    si tu veux cliquer ok pour tout tu valide sans rien toucher d'autre dans le userform

    sinon tu selectionne les checkbox voulu
    tu a un bouton page vierge
    un bouton pdf
    ect....
    l'userform s'affiche juste apres les colonnes concernées tu a donc un regard permanent sur ta grille

    regegarde essaie le et dis moi que c'est pas plus simple dis moi que c'est pas plus simple
    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

  12. #12
    Nouveau membre du Club
    Inscrit en
    Septembre 2013
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Septembre 2013
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    bon j'avoue,c'est niquel mis à part une chose ^^

    comment faire lorsque je fais l'enregistrement PDF pour qu'il n'y a plus cette ligne verte dessus ^^ ( a part mettre la ligne verte ailleurs ^^)

    sinon grand merci.

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