![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Excel Forum d'entraide sur Excel |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre habitué
![]() |
Bonjour à tous,
Je vous remercie d'avance d'avoir pris le temps de venir sur ce poste. Je vous donne ma démarche, ainsi votre aide sera plus facile si vous avez tous les éléments. J'ai un fichier excel au format .xls J'ai créé dans "A1" un menu déroulant (non applicable, non renseignée, oui, non) mais cela n'a pas forcément d'importance. Dans "A2", il y a du texte que je masque avec cette condition SI(A1="oui";"précisez";""). Dans "A3", il y a une valeur de type "texte" que l'utilisateur remplira si il voit dans "A2" le texte "précisez" qui s'affiche si "A1" est égale à "oui". De plus j'ai mise une mise en forme conditionnelle pour faire apparaitre une bordure sous la cellule. Jusque là pas de soucis mais si l'utilisateur décide de changer et choisit autre chose que "oui" je souhaiterais que la cellule est son contenu effacer. Attention j'insiste sur le terme "effacer" et pas de bidouillage de mise en forme conditionnelle pour changer la couleur de la police car si l'utilisateur change encore d'avis et met à nouveau "oui" je veux pas qui trouve son ancienne valeur. Voilà mon problème, j'attends vos suggestions sur le problème car je sais pas du tout comment faire. merci à tous. |
|
|
|
|
|
#2 (permalink) |
|
Membre habitué
![]() Date d'inscription: novembre 2002
Localisation: Blois (41)
Âge: 40
Messages: 160
|
Bonjour,
Il faut utiliser une macro pour effacer le contenu de la cellule quand le choix de la liste déroulante change. Bouton de droite sur la liste et choisit "affecter une macro" et clique sur "Nouvelle" et la tu tape ta macro (ou utilise l'enregistreur de macro) macro (par exemple) Code :
Sub Zonedeliste1_QuandChangement() Range("A3") = "" End Sub |
|
|
|
|
|
#3 (permalink) |
|
Membre habitué
![]() |
Bonjour speed41,
je n'arrive pas à associé une macro ma liste déroulante comme vous me l'indiquez. Je vais vous précisez ma version de excel et la manière dont j'ai construit ma liste déroulante. version de excel : 2007. liste déroulante : avec la validation de donnée (c'est peu être ça le problème). Peut-on executer une macro appartir d'unclic dans la cellule "A3" ? Merci j'attends votre réponse. Dernière modification par tiyolx ; 14/08/2008 à 13h02 |
|
|
|
|
|
#4 (permalink) |
|
Membre habitué
![]() |
Bonjour SPEED41, Bonjour à tous,
Je vous donne le code qui m'a permis de réaliser mon projet mais je sais pas encore à quoi sert les lignes de code de ce programme. Attention, il faut mettre le programme ci-dessous dans la feuille excel qui contient les "A1", "A2" et "A3" (ex feuille1) dans le logiciel Microsoft VB. Code :
Private Sub Worksheet_Change(ByVal Target As Range) ' je ne sais pas à quoi sert la ligne au dessus et la méthode utilisée désolé If Not Application.Intersect(Target, Range("A1")) Is Nothing Then ' on controle que la cellule active est différente de "Oui" ' si la réponse est vrai alors le contenu de "A3" est effacer If ActiveCell.Value <> "Oui" Then Range("A3").Value = "" End If End Sub merci à tous. |
|
|
|
|
|
#5 (permalink) |
|
Membre Expert
![]() Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 002
|
Salut tiyolx et le forum
Private Sub Worksheet_Change(ByVal Target As Range) Macro qui se déclenche automatiquement lorsque qu'une cellule passe en mode édition (qu'on "entre" dans la cellule pour la modifier ou non La variable système contient la plage de cellules modifiées If Not Intersect(Target, Range("A1")) Is Nothing Then (test 1) si A1 fait partie de la plage de cellules modifiées, alors si non(intersection de target et A1 est vide), alors If ActiveCell.Value <> "Oui" Then Range("A3").Value = "" Si la valeur contenue dans la cellule active est différente de "Oui", alors mettre la valeur "" dans la cellule A3 End If fin de la condition Vrai du test 1 End Sub Fin de la macro Ne connaissant pas l'emploi de cette macro, je ne peut que constater que constater qu'elle ne me plait pas A+ EDIT Clic-droit sur le nom de l'ongelt de la feuille => Menu contextuel>>Visualiser le code Tu colles la macro suivante (attention, une seule macro Worksheet_Change par module) Code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" and Target <> "Oui" Then [A3].ClearContents End Sub Dernière modification par Gorfael ; 15/08/2008 à 01h51 |
|
|
|
|
|
#6 (permalink) |
|
Membre habitué
![]() |
Bonjour à tous,
Dans le code si dessous j'ai une erreur de compilation sur [cellule_ac2].ClearContents et je sais pas pourquoi sachant que cellule_ac2 est une variable voir code. Code :
Private Sub Worksheet_Change(ByVal Target As Range) nligne = ActiveCell.Row cellule_ld = "E" & nligne cellule_ac1 = "J" & nligne cellule_ac2 = "N" & nligne Dim valeur Select Case nligne ' Évalue Number. Case 40 ' Le nombre est 40. valeur = "Autre" Case 42 To 115 ' Le nombre est compris entre 42 et 115. valeur = "Oui" Case Else ' Autres valeurs. valeur = "Positif" End Select If ((nligne = 69) Or (nligne = 192) Or (nligne = 194) Or (nligne = 196) Or (nligne = 198)) Then If Target.Address(0, 0) = cellule_ld And Target <> valeur Then [cellule_ac2].ClearContents ElseIf (nligne = 44) Then If Target.Address(0, 0) = cellule_ld And Target <> valeur Then [cellule_ac1].ClearContents If Target.Address(0, 0) = cellule_ld And Target <> valeur Then [cellule_ac2].ClearContents Else If Target.Address(0, 0) = cellule_ld And Target <> valeur Then [cellule_ac1].ClearContents End If End Sub |
|
|
|
|
|
#7 (permalink) |
|
Membre Expert
![]() Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 002
|
Salut tiyolx et le forum
essaie cette macro en mettant ce que tu veux en A1 : Code :
Sub aa() Dim X As String Dim Y X = "A1" Y = [X] MsgBox "X=" & X & Chr(13) & "Y=" & Y, vbOKOnly End Sub Tu veux effacer le contenu de la variable cellule_ac2 avec une méthode/propriété d'une cellule => Excel avale de travers Remplace [cellule_ac1] par range(cellule_ac1) et [cellule_ac2] par range(cellule_ac2) A+ Dernière modification par Gorfael ; 18/08/2008 à 10h14 |
|
|
|
|
|
#8 (permalink) |
|
Membre habitué
![]() |
Bonjour à tous, bonjour Gorfael,
J'ai remplacé [A3].ClearContents par Range("A3").Value = "" et ça marche bien mais je tiens à dire que Range("A3").ClearContents fonctionne aussi mais pour des cellules non fusionnées. Je remerci tout particulierement Gorfael, à bientôt tout le monde. |
|
|
|
|
|
#9 (permalink) | |
|
Membre Expert
![]() Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 002
|
Salut tiyolx et le forum
Citation:
A+ |
|
|
|
|
|
![]() |
![]() |
||
effacer le contenu d'une cellule
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|