Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA avec fonction Target / if not intersect

laurentdu24

XLDnaute Nouveau
Bonjour,

J'avais cette fonction qui fonctionnait parfaitement :

Private Sub Worksheet_Change_value1(ByVal Target As Range)
If Not Intersect(Target, Range("Aj4:aj7")) Is Nothing Then
fonction_relance_calculs
End If
End sub


Le but de cette fonction est de relancer des calculs quand je modifie une saisie dans les cellules de la zone spécifiée.
Ces calculs sont relancés avec diverses macros, sur plusieurs feuilles auxquelles on envoie les nouvelles valeurs.

Maintenant, j'ai droit à la jolie sonnette de excel. Je ne comprends pas pourquoi.
Quand je l'exécute depuis la page des macros, c'est comme si elle ne s'exécutait pas, END SUB n'est pas surligné en Jaune.
Les autres macros s'exécutent, pourtant.
La fonction fonction_relance_calculs fonctionne très bien, toute seule.

Pouvez-vous me dire où j'ai fait une co... bêtise ?
  • paramètre de cette fonction ? je n'ai rien modifié...
  • plusieurs fonctions avec cette fonction ? j'ai supprimé tous les essais correctifs...

Questions subsidiaires liées à des tests, mais je ne comprends pas :
1 : Cette fonction doit-elle être posée spécifiquement dans les macros de la feuille concernée ou plutôt dans un module ?
(elle fonctionnait très bien en étant posée sur la feuille concernée...)
2 : fonctionne-t-elle également si je suis sur une autre feuille ?

Merci d'avance de votre aide.

Laurent
 

laurentdu24

XLDnaute Nouveau
Oui, donc si ça existe, c'est après 2016, donc 2019, 2021 ou 365.

Mais l'ami Gégé qui est sous 365 a dit que ça n'existait pas sous 365.
Je lui fait confiance, alors je pige pas trop.
je l'ai sur 2021, les anciens, je n'ai pas de certitude.
Je regarderai sur les plus anciens, car si mes utilisateurs n'ont pas accès aux fonctionnalités... ça craint
Mais je dirais qu'il n'y a pas de raisons c juste : activer certaines fonctions sur changement de cellules... pas très complexe et plutôt basique pour un concepteur d'excel
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Conseil : Pour implanter une procédure de prise en charge d'évènement, utilisez toujours les listes déroulantes qui surmontent la fenêtre de code. Celle de gauche (Objet) propose tous les objets générateurs d'évènements disponibles dans le module objet. Celle de droite (Procédure) tous les évènements pouvant être pris en charge. Je serais vraiment extrêmement étonné qu'en version 365 l'objet Worksheet propose la prise en charge d'un évènement Change_value ! Ce serait vraiment du grand n'importe quoi ! Ne serait-ce qu'à cause du "_" que ce nom d'évènement contiendrait. Ce serait une dérogation invraisemblable à la règle selon laquelle ce caractère n'est utilisé que comme séparateur entre le nom de l'objet et le nom de l'évènement. Comme dans SelectionChange, Selection_Change n'existant pas.
 

Gégé-45550

XLDnaute Accro
Bonsoir laurentdu24,
la question que pose TooFatBoy, ce n'est pas l'existence de la fonction Worksheet_Change, il est bien évident qu'elle existe dans toutes les versions d'Excel, mais l'existence de la fonction Worksheet_Change_value.
C'est le _value qui interpelle ... et qui n'existe pas, quelle que soit la version d'Excel
, du moins de ce que j'ai vu des nombreuses versions d'Excel qui me sont passées entre les mains.
Soit cette fonction (Worksheet_Change_value) a été créée dans un module et elle peut être appelée, soit elle est incorrecte car inexistante en VBA.
Cordialement,
 

laurentdu24

XLDnaute Nouveau
Oui, ce n'est pas change_value...

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("e12:e15")) Is Nothing Then

fonction1
end if

If Not Intersect(Target, Range("e27:e32")) Is Nothing Then

fonction2
End If

end sub
 

Discussions similaires

Réponses
4
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…