problème de conditions en vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

blackjack

XLDnaute Occasionnel
Bonjour les amis,
J'ai un petit souci avec un code en vba
Voici mon code
Private Sub Worksheet_Change(ByVal Target As Range)
If Int(Range("A1")) <> 15 Then
Shapes("test").Visible = msoTrue
Else
Shapes("test").Visible = msoFalse
End If
End Sub
il fonctionne très bien, sauf que je voudrais augmenter les conditions (<> 50, <> 60 etc) étendre les cellules à vérifier sur la colonne A jusqu’à la ligne 122

La je ne sais pas comment faire ...
Avez vous une piste ?
Merci d'avance

BJ
 
Bonjour BJ,
A essayer, j'ai pas testé car pas de fichier
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
dim vu as boolean
dim lig as long
for lig=1 to 122' boucle
if int(cells(lig,1))=15 or int(cells(lig,1))=50 or int(cells(lig,1))=60 then vu =true:exit for
next
if vu=true then
Shapes("test").Visible = msoFalse
Else
Shapes("test").Visible = msoTrue
End If
End Sub
 
j'avais pas vu que c'était en worksheet_change
donc j'ai mis 2 lignes en plus pour gérer et sans voir qlq données
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vu As Boolean
Dim lig As Long
If Target.Column > 1 Then Exit Sub
On Error Resume Next
For lig = 1 To 122 ' boucle
If Int(Cells(lig, 1)) = 15 Or Int(Cells(lig, 1)) = 50 Or Int(Cells(lig, 1)) = 60 Then vu = True: Exit For
Next
If vu = True Then
Shapes("test").Visible = msoFalse
Else
Shapes("test").Visible = msoTrue
End If
End Sub
Bruno
 
Ben........ avec un fichier ça va tout seul.
Attention tu as ce code en workbook il faut l'annuler et laisser que celui en worksheet
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vu As Boolean
Dim lig As Long
'target est la cellule modifiée
If Target.Column > 1 Then Exit Sub
On Error Resume Next
If Target = "" Or Int(Target.Value) = 15 Or Int(Target.Value) = 50 Or Int(Target.Value) = 60 Then
Shapes("test").Visible = msoFalse
Else
'Shapes("test").Top = Target.Top
Shapes("test").Visible = msoTrue
Target.Select
End If
End Sub
Bruno
 
Bonjour,
Après plusieurs essais, cela ne fonctionne que sur une cellule à la fois, je m'explique:
en A2 je saisie un code erroné ex "16" , le message apparait. Je saisie "15", il disparait là tout va bien ...
Maintenant en A2 je saisie "16 "et A3 "26".
Si je corrige en A2, le message disparait alors qu'en A3 il y a toujours un code erroné alors que le message devrait resté affiché.

Et pour ma culture: ce sont les cellules de la colonne A qui sont concernées. Comment désigner la colonne b ?
Merci du coup de main.
BJ
 
Salut bien,
Pour la colonne A voici
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'target est la cellule modifiée
If Target.Column > 1 Then Exit Sub
On Error Resume Next
If Target = "" Or Int(Target.Value) = 15 Or Int(Target.Value) = 50 Or Int(Target.Value) = 60 Then
Shapes("test").Visible = msoFalse
Else
Shapes("test").Visible = msoTrue
Target.Select
MsgBox "Code Erronné: " & Target, vbExclamation, "ANNULATION"
Target = ""
End If
End Sub

code pour colonne B
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'target est la cellule modifiée
If Target.Column = 2 Then
On Error Resume Next
If Target = "" Or Int(Target.Value) = 15 Or Int(Target.Value) = 50 Or Int(Target.Value) = 60 Then
Shapes("test").Visible = msoFalse
Else
Shapes("test").Visible = msoTrue
Target.Select
MsgBox "Code Erronné: " & Target, vbExclamation, "ANNULATION"
Target = ""
End If
End If
End Sub
A la limite on peut utiliser que la MsgBox(boite message)
Bruno
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
249
Réponses
2
Affichages
203
Réponses
4
Affichages
225
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
319
Réponses
72
Affichages
1 K
Retour