[VBA]Optimiser mon programme en 1 seul bouton
lml-mike
Messages postés
455
Date d'inscription
Statut
Contributeur
Dernière intervention
-
lml-mike Messages postés 455 Date d'inscription Statut Contributeur Dernière intervention -
lml-mike Messages postés 455 Date d'inscription Statut Contributeur Dernière intervention -
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 :
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 !
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:
- [VBA]Optimiser mon programme en 1 seul bouton
- Optimiser son pc - Accueil - Utilitaires
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Optimiser windows 10 - Guide
- Diagnostic bouton photo - Accueil - Outils
1 réponse
Bonjour,
Il faut passer la procédure en fonction booléenne et mettre le numéro du pc en paramètre.
Exemple:
Ceci est un exemple d'utilisation de paramètres à adapter.
Bon courage
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
En gros le pc 1 est à d3, le 2 à D23, le 3 a D33, le 4 a D43 etc...
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 ...
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