Aide code VBA

Bonjour à tous ,

Je suis grand débutant en VBA et j'aurais besoin de votre aide pour résoudre un petit problème (je peux pas fournir le fichier car il est confidentiel).

J'ai récupéré un code sur un tuto pour créer un baromètre qui permet de faire varier l'inclinaison de mon aiguille selon un pourcentage. Cependant le problème est que lorsque je change de chiffre, excel me sélectionne automatiquement ma forme appelé "Aiguille" et c'est assez dérangeant.

Je voudrais juste savoir comment faire pour que excel ne sélectionne pas cette forme dès que j'applique un filtre.

Voici le code.

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

ActiveSheet.Shapes.Range(Array("Aiguille")).Select

Selection.ShapeRange.Rotation = Range("AM1").Value * 213

Application.ScreenUpdating = True

End Sub

Merci d'avance pour votre aide.

(Mon baromètre avec l'aiguille en PJ)

capture

Bonjour,

Il suffit de restreindre la plage d'intervention de la macro ...

Concrètement, c'est au moment où tu modifies quelles cellules ... que tu as besoin de la mise à jour de ton baromètre ...???

Bonjour James, c'est quand j'applique un filtre avec des segments qui modifie donc les données des tableaux croisé dynamique.

J'ai ensuite relié ce résultat sous forme de pourcentage dans une autre case (AM1) pour éviter que la macro bloque en cas d'erreur.

Voilà de quoi je me sert (j'ai masquer les données du TCD).

capture

Re,

Tu peux tester la macro suivante :

Private Sub Worksheet_Change(ByVal Target As Range)
' Quitter la procédure
If Intersect(Target, Range("AH1:AH12")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
ActiveSheet.Shapes.Range(Array("Aiguille")).Select
Selection.ShapeRange.Rotation = Range("AM1").Value * 213
Application.ScreenUpdating = True
End Sub

En espérant que cela puisse t'aider ...

Merci pour ton aide mais ça ne fonctionne pas , ça sélectionne toujours ma forme quand je choisis un segment.

De plus j'ai plusieurs feuilles avec les mêmes segments et lorsque j'applique un segment sur une de ces autres feuilles, la macro semble s’exécuter et ne trouve logiquement pas la forme "Aiguille", il y a donc un message d'erreur qui s'ouvre ...

bonjour,

bonjour le forum,

pour éviter que l'aiguille ne soit sélectionnée.

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    ActiveSheet.Shapes.Range(Array("Aiguille")).Rotation = Range("AM1").Value * 213
    Application.ScreenUpdating = True
End Sub

après tu peux ajouter le code proposé par James pour ne faire la mise à jour du "baromètre" que lorsque c'est pertinent.

Re,

Désolé ... ...mais je n'ai pas de boule de cristal ....

Avec le très peu d'éléments que tu communiques ...

et surtout sans le fichier ... car il doit y avoir d'autres macros et diverses interactions entre elles ...

pour moi, difficile de t'aider davantage ...

J'espère qu'un autre contrbuteur plus doué que moi ... pourra t'aider ...

Merci pour vos réponses,

H2O ton code marche nickel merci !

Désolé si je n'ai pas été clair James ... Mais c'est assez compliqué à décrire ! Et non c'est la première macro que j'ai pour le moment

Juste dernier petit problème que j'ai énoncé juste avant, la macro s'exécute sur d'autres pages et ça produit donc une erreur... Quel serait le code pour que ma macro s'exécute uniquement sur la page où se situe mon aiguille c'est à dire la page "Répartition" ?

bonjour,

cette macro ne s'exécute que sur la feuille à laquelle est liée. tu as donc plusieurs macros ou une copie de cette macro sur d'autres feuilles. supprime cette macro sur les autres feuilles.

J'avais copié cette même feuille donc ça met les erreurs sur les autres feuilles alors que j'ai mis aucun code pour ces feuilles ... Je me suis débrouillé, j'ai copié et masqué la forme dans chacune des feuilles pour éviter l'erreur. Merci beaucoup pour ton aide

Rechercher des sujets similaires à "aide code vba"