Vérifier changement de contenu d'une cellule dans une liste déroulante

Bonjour à tous et à toutes

Je bute encore sur mon projet et je viens demander à l'aide !

J'ai mis le fichier joint ici :

11pour-export.xlsm (17.34 Ko)

En effet j'ai préparé des cellules avec des listes déroulantes de choix (en passant par "validation des données)

je souhaite afficher différent messages a chaque fois qu'on sélectionne un élément dans cette liste déroulante (avec le excel ca sera plus simple)

Pour "vider" la cellule j'appuis tout simpement sur "suppr" une fois sélectionné (faut il mettre un choix blanc dans la liste ? si oui est ce que c'est indispensable ? ca m'arrangerait de ne pas l'avoir)

En vous remerciant par avance du temps que vous me consacrerez

Cordialement

NL

Neo

tu as deux listes déroulantes en D1 et en D2. De laquelle parles-tu. sont-elles dépendantes?

Bonjour,

Une proposition à étudier.

Cdlt.

16pour-export.xlsm (20.17 Ko)

Bonjour à tous,

merci Jean-Eric pour le Application.Undo

bravo!

isabelle

Bonjour,

Une proposition à étudier.

Cdlt.

pour export.xlsm

Merci pour ta réponse ; ca m'a l'air "parfait" mais je ne comprends pas vraiment le code VBA que tu as utilisé ; peux tu me l'expliquer en détail stp ?

De ce que je comprends tu compare l'ancienne valeur avec la nouvelle mais tu utilises des fonctions que je ne connais pas

merci d'avance

Bonjour,

voici les explications,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oldValue, newValue
'si la sélection est plus d'une cellule, arrêt de la macro
    If Target.CountLarge > 1 Then Exit Sub
'    si la sélection est la cellule D1 ou D2 alors
    If Not Intersect(Target, Range("D1:D2")) Is Nothing Then
'    la variable newValue prend la nouvelle valeur
        newValue = Target.Value
'        empêcher les événements
        Application.EnableEvents = False
'        retour en arrière
        Application.Undo
'    la variable oldValue prend l'encienne valeur
        oldValue = Target.Value
'        on remet la nouvelle valeur sur la cellule, se qui revient à annuler retour en arrière
        Target.Value = newValue
'        réactiver les événements les événements
        Application.EnableEvents = True
'        comapaison des variables oldValue et newValue
        If oldValue = "" And newValue <> "" Then Cells(7, 2).Value = "De vide à plein"
        If oldValue <> "" And newValue <> "" Then Cells(7, 2).Value = "De objet à objet"
        If oldValue <> "" And newValue = "" Then Cells(7, 2).Value = "De plein à vide"
    End If
End Sub

Merci pour ces éclaircissements !

Néanmoins je suis maintenant bien embêté car en voulant faire l'analogisme avec mon fichier excel , ca ne marche pas parceque j'utilise des cellules fusionnés (donc du coup pour excel; je selectionne deux cellules)

hmmm...

Comment on pourrait faire ?

Faut il que je refasse un fichier excel ouc 'est clair?

pourrais-tu joindre un fichier(xl) en exemple ?

pourrais-tu joindre un fichier(xl) en exemple ?

Bien sur : voila ci dessous :

(merci pour tous les messages j'ai vu que tu as répondu a beaucoup de sujet sur d'autres problèmes c'est super )

22pour-export.xlsm (17.75 Ko)

Bonjour,

A première vue, incompréhensible.

Cdlt.

Bonjour,

A première vue, incompréhensible.

Cdlt.

EDIT :

Je suis désolé ; je pensais que cela venait d'une erreur de frappe et en réalité non... Du coup le sujet n'est pas résolu contrairement à ce que je viens d'indiquer...

Je refais mon exemple dans le fichier ci joint ; j'espére que ce sera plus clair

je suis vraiment désolé de ne pas avoir remarqué cette erreur de frappe...

Donc voila avec les cellules fusionnés la comparaison des new_value et old_value que l'on m'avait proposé ne fonctionne plus... J'ai essayé de shunter le probléme sans succés

Voici le fichier :

4pour-export-2.xlsx (11.13 Ko)

Je vous remercie par avance !

Bonjour,

A première vue, incompréhensible.

Cdlt.

J'espére que ce coup ci c'est plus limpide !

Rechercher des sujets similaires à "verifier changement contenu liste deroulante"