IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

effacer le contenu d'une cellule


Sujet :

Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 244
    Points : 138
    Points
    138
    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.

  2. #2
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Zonedeliste1_QuandChangement()
        Range("A3") = ""
    End Sub
    Voila comment je m'y prendrais, en espérant avoir répondus à ta question

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 244
    Points : 138
    Points
    138
    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.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 244
    Points : 138
    Points
    138
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    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.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A1" and Target <> "Oui" Then [A3].ClearContents
    End Sub

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 244
    Points : 138
    Points
    138
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    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.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut tiyolx et le forum
    essaie cette macro en mettant ce que tu veux en A1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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+

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 244
    Points : 138
    Points
    138
    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.

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut tiyolx et le forum
    je tiens à dire que Range("A3").ClearContents fonctionne aussi mais pour des cellules non fusionnées.
    Essaie : Range("A3").MergeArea.ClearContents
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2010] Effacer le contenu d'une cellule d'un tableau word
    Par totoro the big one dans le forum VBA Word
    Réponses: 2
    Dernier message: 17/03/2015, 20h27
  2. Effacement du contenu d'une cellule sur Change ?
    Par marot_r dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/11/2007, 21h14
  3. effacer le contenu d'une feuille active en préservant des cellules
    Par Jerez62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2006, 19h24
  4. [VBA-E] Effacer le contenu d'une plage de cellules
    Par nicobox dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2006, 12h20
  5. Comment effacer le contenu d'une scrollbox???
    Par Leclair2000 dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/07/2004, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo