[VBA]Optimiser mon programme en 1 seul bouton
lml-mike
Messages postés
487
Statut
Contributeur
-
lml-mike Messages postés 487 Statut Contributeur -
lml-mike Messages postés 487 Statut Contributeur -
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