Forum des développeurs  

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é.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel

Excel Forum d'entraide sur Excel

Réponse
 
Outils de la discussion
Vieux 14/08/2008, 09h50   #1 (permalink)
Membre habitué
 
Date d'inscription: mai 2005
Messages: 151
Envoyer un message via MSN à tiyolx
Par défaut effacer le contenu d'une cellule

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.
tiyolx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 10h52   #2 (permalink)
Membre habitué
 
Avatar de Speed41
 
Date d'inscription: novembre 2002
Localisation: Blois (41)
Âge: 40
Messages: 160
Par défaut

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
Voila comment je m'y prendrais, en espérant avoir répondus à ta question
Speed41 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 12h41   #3 (permalink)
Membre habitué
 
Date d'inscription: mai 2005
Messages: 151
Envoyer un message via MSN à tiyolx
Par défaut impossible d'associé une macro à ma liste déroulante

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
tiyolx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/08/2008, 15h56   #4 (permalink)
Membre habitué
 
Date d'inscription: mai 2005
Messages: 151
Envoyer un message via MSN à tiyolx
Par défaut j'ai une solution qui fonctionne

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
 
PS: qui peut m'expliquer le haut du programme pour m'aider à comprendre ce que j'utilse, merci d'avance.

merci à tous.
tiyolx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/08/2008, 01h37   #5 (permalink)
Membre Expert
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 002
Par défaut

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 . Pourquoi utiliser ActiveCell, alors que c'est si A1 contient "Oui" que je veux effacer A3 ?
A+
EDIT Désolé, j'avais juste lu le dernier poste
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
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 09h33   #6 (permalink)
Membre habitué
 
Date d'inscription: mai 2005
Messages: 151
Envoyer un message via MSN à tiyolx
Par défaut

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
 
merci de votre aide à tous.
tiyolx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 10h02   #7 (permalink)
Membre Expert
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 002
Par défaut

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
Les notations ne veulent pas forcément dire ce qu'on pense .
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
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 10h37   #8 (permalink)
Membre habitué
 
Date d'inscription: mai 2005
Messages: 151
Envoyer un message via MSN à tiyolx
Par défaut

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.
tiyolx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/08/2008, 13h45   #9 (permalink)
Membre Expert
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 002
Par défaut

Salut tiyolx et le forum
Citation:
je tiens à dire que Range("A3").ClearContents fonctionne aussi mais pour des cellules non fusionnées.
Essaie : Range("A3").MergeArea.ClearContents
A+
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide