Checkbox et vérification de condition
Résolu
fcsjeux
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
fcsjeux Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
fcsjeux Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour à vous les balaises du VBA !
Vous vous en doutez si je suis de ce coté du forum c'est bien parce que je ne comprend pas bien comment utiliser la VBA sur Excel.
Je travail actuellement sur un classeur Excel de paramétrage automatique pour pouvoir calculer toutes les dimensions d'un système mécanique en fonction de 3 ou 4 données d'entrées.
Jusque là j'arrivais à me débrouiller en parcourant tous les forums possible. Mais là, la macro me semble de taille.
Pour faire simple, voici une simplification de mon cas avec le dimensionnement des diamètres intérieur et extérieur d'un cylindre :
Soit 2 feuilles F1 et F2.
Sur F1, l'opérateur entre les deux diamètres en A1 (intérieur) et A2 (extérieur). A ces cellules est associé une checkbox.
Une fois activé, cette Checkbox permet de copier les valeurs de A1 et A2 vers les cases B1 et B2 de F2.
Sur F2, en B3, une formule condition impose que A1<A2/2
Si la condition est validée, rien ne se passe; sinon un message d'erreur apparait pour prévenir que la condition n'est pas respectée. Je pense pouvoir être capable de faire cette dernière partie de macro mais je mettrais 2h à la faire contre 2 minutes pour vous... ;)
Voilà j'espère avoir été clair et que quelqu'un saura me donner la clés...
François
Vous vous en doutez si je suis de ce coté du forum c'est bien parce que je ne comprend pas bien comment utiliser la VBA sur Excel.
Je travail actuellement sur un classeur Excel de paramétrage automatique pour pouvoir calculer toutes les dimensions d'un système mécanique en fonction de 3 ou 4 données d'entrées.
Jusque là j'arrivais à me débrouiller en parcourant tous les forums possible. Mais là, la macro me semble de taille.
Pour faire simple, voici une simplification de mon cas avec le dimensionnement des diamètres intérieur et extérieur d'un cylindre :
Soit 2 feuilles F1 et F2.
Sur F1, l'opérateur entre les deux diamètres en A1 (intérieur) et A2 (extérieur). A ces cellules est associé une checkbox.
Une fois activé, cette Checkbox permet de copier les valeurs de A1 et A2 vers les cases B1 et B2 de F2.
Sur F2, en B3, une formule condition impose que A1<A2/2
Si la condition est validée, rien ne se passe; sinon un message d'erreur apparait pour prévenir que la condition n'est pas respectée. Je pense pouvoir être capable de faire cette dernière partie de macro mais je mettrais 2h à la faire contre 2 minutes pour vous... ;)
Voilà j'espère avoir été clair et que quelqu'un saura me donner la clés...
François
A voir également:
- Checkbox et vérification de condition
- Excel cellule couleur si condition texte - Guide
- Verification lien internet - Guide
- Verification windows 11 - Guide
- Verification cloudflare impossible ✓ - Forum Cloud
- Verification de l'identité du serveur impossible - Forum WiFi
3 réponses
Bonjour François,
voici ce qu'il faut faire
Private Sub CheckBox1_Click() 'c'est la Checkbox en question
If CheckBox1.Value = True Then
Dim A1, A2, Msg As String
With Worksheets(1)
A1 = .Range("A1")
A2 = .Range("A2")
End With
If A1 < A2 / 2 Then
Msg = "ATTENTION!" & vbCrLf & "La valeur de la cellule " & Chr(91) _
& "A1" & Chr(93) & " doit être strictement supèrieure " & vbCrLf & _
" à la valeur de la cellule " & Chr(91) & "A2/2" & Chr(93) & " !"
MsgBox Msg, vbOKOnly + vbCritical, "ERREUR"
Exit Sub
End If
With Worksheets(2)
.Range("B1") = A1
.Range("B2") = A2
End With
End If
End Sub
Mes salutations
Barb38
voici ce qu'il faut faire
Private Sub CheckBox1_Click() 'c'est la Checkbox en question
If CheckBox1.Value = True Then
Dim A1, A2, Msg As String
With Worksheets(1)
A1 = .Range("A1")
A2 = .Range("A2")
End With
If A1 < A2 / 2 Then
Msg = "ATTENTION!" & vbCrLf & "La valeur de la cellule " & Chr(91) _
& "A1" & Chr(93) & " doit être strictement supèrieure " & vbCrLf & _
" à la valeur de la cellule " & Chr(91) & "A2/2" & Chr(93) & " !"
MsgBox Msg, vbOKOnly + vbCritical, "ERREUR"
Exit Sub
End If
With Worksheets(2)
.Range("B1") = A1
.Range("B2") = A2
End With
End If
End Sub
Mes salutations
Barb38
Bonsoir !
Merci beaucoup de ta réponse, je ne m'attendais pas à autant !
Seulement, j'ai fait un essai en m'adaptant avec ta macro pour le nom des feuilles mais vu que mon Excel est en français (et version 2007... moins claire qu'au bon vieux temps !) j'ai une "Case à cocher". J'ai donc aussi adapté la macro de cette manière :
"Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = True Then
Dim A1, A2, Msg As String
With Worksheets(1)
...etc"
Ensuite, lorsque je lance la machine j'ai un message d' "erreur d'exécution '424': Objet requis". Lorsque je clique "débogage" on me sélectionne la seconde ligne en jaune...
Il y a t-il une raison à cela ...?
François
Merci beaucoup de ta réponse, je ne m'attendais pas à autant !
Seulement, j'ai fait un essai en m'adaptant avec ta macro pour le nom des feuilles mais vu que mon Excel est en français (et version 2007... moins claire qu'au bon vieux temps !) j'ai une "Case à cocher". J'ai donc aussi adapté la macro de cette manière :
"Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = True Then
Dim A1, A2, Msg As String
With Worksheets(1)
...etc"
Ensuite, lorsque je lance la machine j'ai un message d' "erreur d'exécution '424': Objet requis". Lorsque je clique "débogage" on me sélectionne la seconde ligne en jaune...
Il y a t-il une raison à cela ...?
François
Bon finalement j'ai essayé ta macro sur Excel 2003 en anglais.
Een restant sur ta base, j'ai fait quelques modifs comme :
- la condition mathématique
- le message d'erreur
- un "décochage" automatique de la CheckBox
et voici :
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Dim C10, C17, Msg As String
With Worksheets(1)
C7 = .Range("C7")
C13 = .Range("C13")
End With
If (C13 < C7 + (15 * C7 / 100)) Then
Msg = "ATTENTION !" & vbCrLf & "diam_ext_a < diam_int_a+15% !" & vbCrLf & "Modifiez les données d'entrée." & vbCrLf & "Valeur minimale pour diam_ext_a:" & vbCrLf & C7 & "+ 10% =" & C7 + 15 * C7 / 100 & "."
MsgBox Msg, vbOKOnly + vbCritical, "ERREUR"
CheckBox1.Value = False
Exit Sub
End If
With Worksheets(2)
.Range("C7") = C7
.Range("C13") = C13
End With
Call attendre2
CheckBox1.Value = False
End If
End Sub
Sub attendre2()
' Attendre 1 secondes
nvlleHeure = Hour(Now())
nvlleMinute = Minute(Now())
nvlleSeconde = Second(Now()) + 1
waitTime = TimeSerial(nvlleHeure, nvlleMinute, nvlleSeconde)
Application.Wait waitTime
End Sub
Et le pire !! c'est que ça fonctionne !!!!!!!! :D
Un grand merci Barb38 !
Een restant sur ta base, j'ai fait quelques modifs comme :
- la condition mathématique
- le message d'erreur
- un "décochage" automatique de la CheckBox
et voici :
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Dim C10, C17, Msg As String
With Worksheets(1)
C7 = .Range("C7")
C13 = .Range("C13")
End With
If (C13 < C7 + (15 * C7 / 100)) Then
Msg = "ATTENTION !" & vbCrLf & "diam_ext_a < diam_int_a+15% !" & vbCrLf & "Modifiez les données d'entrée." & vbCrLf & "Valeur minimale pour diam_ext_a:" & vbCrLf & C7 & "+ 10% =" & C7 + 15 * C7 / 100 & "."
MsgBox Msg, vbOKOnly + vbCritical, "ERREUR"
CheckBox1.Value = False
Exit Sub
End If
With Worksheets(2)
.Range("C7") = C7
.Range("C13") = C13
End With
Call attendre2
CheckBox1.Value = False
End If
End Sub
Sub attendre2()
' Attendre 1 secondes
nvlleHeure = Hour(Now())
nvlleMinute = Minute(Now())
nvlleSeconde = Second(Now()) + 1
waitTime = TimeSerial(nvlleHeure, nvlleMinute, nvlleSeconde)
Application.Wait waitTime
End Sub
Et le pire !! c'est que ça fonctionne !!!!!!!! :D
Un grand merci Barb38 !