[VBA]Optimiser mon programme en 1 seul bouton

Fermé
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 - Modifié par lml-mike le 11/08/2010 à 12:46
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 - 11 août 2010 à 15:06
Bonjour,

Je travaille en VBA sous excel pour le contrôle de clients sur des postes informatiques en cybercafé.

J'ai 26 postes, chacun avec son lot de boutons (pour les confiseries, ouverture de session, fermeture etc...). Pour pouvoir écrire dans les bonnes cases les informations correspondant aux postes, j'effectue ceci :

Sub nouveau_client1() 

'numpc est une variable publique, réutilisée dans mes formulaires
numpc = 1 


    Worksheets("PC").Activate 
    Range("d1").Activate 
            ligne = Range("d1").Row 
            col = Range("d1").Column 
     
            While Cells(ligne, col).Value <> numpc 
                ligne = ligne + 1 
            Wend 
             
            Cells(ligne, col).Activate 
     
            ActiveCell.Offset(1, 0).Activate 
            If ActiveCell.Value <> "" Then 
                MsgBox (ActiveCell.Value & " est déjà présent(e) sur le pc " & numpc & " !") 
            Else 
                NouveauClient.Show 
            End If 
End Sub


en gros, je check le numéro du PC sur la feuille ou ils y sont tous, et j'utilise la base de l'emplacement pour tout écrire à partir de la propriété activecell.offset.

Le problème, c'est que pour faire ça, il faut que je fasse 26 boutons en copiant collant tout et juste en changeant la variable numpc.

Ma question est la suivante : est-il possible de faire en sorte qu'un seul et unique programme puisse utiliser le même script, en récupérant le numéro du PC en changean juste le nom du bouton ?

Merci beaucoup !
A voir également:

1 réponse

Zakapuce Messages postés 64 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 5 août 2011 7
11 août 2010 à 13:09
Bonjour,

Il faut passer la procédure en fonction booléenne et mettre le numéro du pc en paramètre.

Exemple:
' La fonction
Function nouveau_client1(ByVal pc As Variant) As Booléan

Worksheets("PC").Activate 
    Range("d1").Activate 
            ligne = Range("d1").Row 
            col = Range("d1").Column 
     
            While Cells(ligne, col).Value <> numpc 
                ligne = ligne + 1 
            Wend 
             
            Cells(ligne, col).Activate 
     
            ActiveCell.Offset(1, 0).Activate 
            If ActiveCell.Value <> "" Then 
                nouveau_client1 = False
            Else 
                nouveau_client1 = True
            End If 
End Function

'-----------------------------
'
'Le bouton
Private Sub CommandButton1_Click()

    If nouveau_client1(numpc) = False Then
        MsgBox (ActiveCell.Value & " est déjà présent(e) sur le pc " & numpc & " !") 
        Exit Sub
     Else
        NouveauClient.Show
     End If
End Sub


Ceci est un exemple d'utilisation de paramètres à adapter.

Bon courage
0
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 120
11 août 2010 à 13:30
Je comprends pas ta fonction, on dirait que tu passes en paramètre mon contrôle de saisie, alors qu'en fait c'est à cause du numéro du pc que je dois créer 26 boutons...

En gros le pc 1 est à d3, le 2 à D23, le 3 a D33, le 4 a D43 etc...
0
Zakapuce Messages postés 64 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 5 août 2011 7
11 août 2010 à 13:41
Ah oui ... et ça j'aurai du certainement le sucer de mon pouce pour le savoir o_Ô

Je comprends pas ta fonction, on dirait que tu passes en paramètre mon contrôle de saisie
Tu passes ce que tu veux en paramètre, je ne connais pas ton appli, ni les tenants et aboutissants.

Ceci est un exemple d'utilisation de paramètres à adapter.
Je le mets en gras cette fois ...
0
lml-mike Messages postés 453 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 120
Modifié par lml-mike le 11/08/2010 à 15:07
Ne te met pas sur la défensive, je ne cherchais en aucun cas à te froisser...

Je vais pas recopier/coller ma première question, qui elle aussi est en gras. Je vais donc reformuler, parce que ta fonction n'est pas suffisante malheureusement pour régler mon problème.

Je cherche donc un moyen ou à partir du nom du bouton (je sais pas, par exemple session1, session2 etc...), je peux récupérer le numéro présent dans ce nom de bouton afin de tous leur assigner le même programme. Ce programme récupererait le nom du bouton et en extrairerait le numéro pour le mettre dans la variable numpc.

En gros, tout les boutons utiliseraient la même macro, mais avec un nom différent ils afficheraient les informations a d'autres endroits de la feuille Excel.

Encore une fois, je voulais pas te froisser, si tu t'es senti blessé, je te prie de m'excuser, je ne suis pas venu chercher de l'aide pour rendre les gens ici de mauvaise humeur, même si je le fais malgré moi :x
0