Plus de retour en arrière ?

  • Initiateur de la discussion Initiateur de la discussion guy72
  • Date de début Date de début

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 !

guy72

XLDnaute Impliqué
Bonjour,

Je n'ai plus de retour arrière.
Pouvez-vous me dire pourquoi ?

Exemple:
1) Prenez un nouveau classeur (EXCEL 2003 ou 2010).
2) Dessin --> Forme automatique --> Flèche pleine --> Flèche droite à entaille.
3) La mettre ou vous voulez, lui mettre le nom "Girouette".
4) En E5 mettre un point cardinal.
5) Copier le code suivant :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
RoseWind = Array("NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSO", "SO", "OSO", "O", "ONO", "NO", "NNO", "N")
ActiveSheet.Shapes("Girouette").Rotation = 270 + 22.5 * WorksheetFunction.Match(Range("E5").Value, RoseWind, 0)
End Sub
6) Si vous voulez, vous pouvez changer le texte dans E5 pour faire tourner la flèche.

7) Mettre un texte dans une autre cellule (E17), faite "Entrée"
Maintenant, pouvez-vous supprimer le texte avec l'icône retour arrière ?
Moi je ne peux pas, sauf si je supprime le code pourquoi ?

Un exemple en pièce jointe
Merci de votre aide
Cordialement
Guy
 

Pièces jointes

Re : Plus de retour en arrière ?

Bonjour Guy,

D'abord la macro je l'écrirait comme ceci pour éviter les erreurs quand E5 vide ou texte farfelu etc.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim res As Variant
    RoseWind = Array("NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSO", "SO", "OSO", "O", "ONO", "NO", "NNO", "N")
    res = Application.Match(Range("E5").Value, RoseWind, 0)
    If Not IsError(res) Then ActiveSheet.Shapes("Girouette").Rotation = 270 + 22.5 * res
End Sub

Ensuite c'est normal puisque tu lances la macro sur SelectionChange (Utile???) et que les macros vba vident le buffer des dernières actions. Donc quand tu rentres une données ailleurs, tu valides la sélection change, la macro est lancée, le buffer des dernières action vidé.

A+
 
Re : Plus de retour en arrière ?

Ensuite c'est normal puisque tu lances la macro sur SelectionChange (Utile???) et que les macros vba vident le buffer des dernières actions. Donc quand tu rentres une données ailleurs, tu valides la sélection change, la macro est lancée, le buffer des dernières action vidé.

Bonjour Hasco
Merci pour l'astuce.
Peut-on la lancer sur autre chose que " SelectionChange ?
Cordialement
 
Re : Plus de retour en arrière ?

re,

Il me semble en effet plus judicieux de le faire ailleurs:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address(0,0)="E5" then
        '....tes lignes de macro
   End if
End Sub

L'évènement WorkSheet_Change est lancé lorsque la valeur d'une cellule Change!😱

Il faut donc commencer par tester l'adresse de la cellule (Paramètre Target) qui a changé. Si c'est E5 alors on lance le truc

A+
 
- 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

Retour