Execution d'une macro via une liste

keskidi62

XLDnaute Nouveau
Bonjour et meilleurs voeux à tous.

Voila mon petit problème (simplifié pour éviter les termes techniques de mon tableau)

Dans ma cellule A1, je rentre un texte, soit : OK ou KO
Si je selectionne OK rien ne se passe sur la cellule a2
Si je selectionne KO, la cellule A2 se trouve "barrée" (Avec une bordure en diagonale)
Si je reselectionne OK, ma cellule "redevient" normale (suppression de la bordure diagonale)

Le code est le suivant :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Range("a1") = "KO" Then
GoTo ligne1
Else: GoTo ligne2
End If

ligne1:
Range("a2").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
With Selection.Borders(xlDiagonalUp)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 4
End With
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Range("a1").Select

GoTo ligne3

ligne2:
Range("a2").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Range("a1").Select

GoTo ligne3

ligne3:

End sub


Cela fonctionne très bien mais le problème est que je veux faire de ma cellule A1 une liste via le menu Données>Validations>Liste pour ne pas laisser le choix entre OK et KO

et là la macro ne fonctionne plus, et j'comprend pas pourquoi !!!!

Please help me !!!! ;o)

Kes
 

keskidi62

XLDnaute Nouveau
Re : Execution d'une macro via une liste

Je viens de m'apercevoir qu'en fait lorsque je selectionne OK ou KO via la liste, la macro ne se lance pas (elle fonctionne mais ne se lance pas) !!!! car après avoir selectionné KO, en double cliquant sur une autre cellule la macro se lance est barre ma cellule A2

l'erreur ne vient elle pas de la première ligne de la macro ??? :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 

skoobi

XLDnaute Barbatruc
Re : Execution d'une macro via une liste

Re,

chez-moi cela marche parfaitement....
par contre il faut mettre une condition pour que la macro ne s'exécute que lorsque c'est la cellule A1 qui est modifié:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" then
......
..........
End If
End sub

A mon avis ça ne va pas résoudre ton problème.
Comme tu dis tu as excel 97 et il y a peut-être une subtilité que je ne connais pas.

Edit: les événements de feuille Change sur excel 97 ne doivent pas détecter les changements dans une liste de choix d'une cellule?
 
Dernière édition:

keskidi62

XLDnaute Nouveau
Re : Execution d'une macro via une liste

Bon je vais dire à mon patron d'investir dans une version récente d'excel ... pour passer plus de temps sur le PC et moins sur mon "vrai" poste de travail !
J'suis pas sûr qu'il soit d'accord mais bon ... sur un malentendu ...

Encore merci et @ bientôt

Kes
 

PMO2

XLDnaute Accro
Re : Execution d'une macro via une liste

Bonjour,

Une piste avec le code suivant à copier dans la fenêtre de code de la feuille concernée

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i&
If Target.Address = "$A$1" Then
  For i& = 5 To 10
    Range("a2").Borders(i&).LineStyle = xlNone
  Next i&
  If Range("a1") = "KO" Then
    With Range("a2").Borders(xlDiagonalUp)
      .LineStyle = xlContinuous
      .Weight = xlThick
      .ColorIndex = 4
    End With
  End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
  With Target.Validation
      .Delete
      .Add Type:=xlValidateList, Formula1:="OK,KO"
  End With
End If
End Sub

Cordialement.

PMO
Patrick Morange
 

Excel-lent

XLDnaute Barbatruc
Re : Execution d'une macro via une liste

Bonjour le fil,


Sinon, il y a aussi la solution de la MFC, plus simple!

Sauf que avec Excel 2003 :
-> il y a : "police barré"
-> il y a les bordures "haut", "bas", "droite", "gauche" mais pas "diagonal".

Alors Excel 97???? Je ne pense pas!

Bonne fin d'après midi
 

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal