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

Macros et VBA Excel Discussion :

Effacement du contenu d'une cellule sur Change ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut Effacement du contenu d'une cellule sur Change ?
    Bonjour à tous et merci de votre aide.

    Je débute en VBA Excel et je me bat avec le pb suivant.

    J'ai une cellule qui contient une liste de validation (des niveaux) et j'ai une cellule qui contient une liste de groupes en fonction du niveaux et quand je change le niveau la liste des groupes s'ajuste.

    Mais si il y a déjà un groupe sélectionné le contenu de la cellule n'est pas effacé si on change le niveau et on peut donc avoir une inchérence entre Niveau <-> Groupe.

    J'ai fait la macro suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public sub Macro2
        'Test effacement
        Range("M7").Select
        Selection.ClearContents
    end sub
    et si je la lance directement, ça marche, la cellule M7 est remise à blanc MAIS si je la lance dans l'événement Change de ma feuille (Worksheet_Change(ByVal Target As Range)) Excel excute le code sans erreur mais il n'efface pas le contenu de la cellule.

    Actuellement la feuille n'est pas protégée et la cellule visée (M7) n'est pas verrouillée.

    Curieusement dans la même procédure Worksheet_Change(ByVal Target As Range) j'ajoute une formule de cacul et ça marche trés bien.

    Quelqu'un aurait-il une idée d'où cela peut venir ?

    Ci-dessous le code de ma sub Worksheet_Change(ByVal Target As Range)

    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Row >= DONNEES_LIGNE_MIN Then
     
            Select Case Target.Column
     
                Case DONNEES_COLONNE_JOUR, DONNEES_COLONNE_MOIS, DONNEES_COLONNE_ANNEE
                    Call shtDonnees.DeprotegerFeuille
                    Call CopierDonneesCalculAge(Target)
                    Call shtDonnees.ProtegerFeuille
     
                Case DONNEES_COLONNE_NIVEAU
                    'shtDonnees.Range(Cells(Target.Row, DONNEES_COLONNE_GROUPE), Cells(Target.Row, DONNEES_COLONNE_GROUPE)).ClearContents
                    Call Macro2
                Case Else
                    'Ne rien faire
            End Select
     
        End If
     
    End Sub
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ce ne serait pas dans Worksheet_SelectionChange qu'il te faudrait la mettre ?
    A quel moment souhaites-tu qu'elle s'exécute ? A la sélection de la cellule ou à la sélection de la feuille ?

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Je veux détecter si mon utilisateur modifie le contenu d'une cellule donc je ne suis pas sur que sélection soit le bon truc.
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ok. Alors teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Adres
    Private Sub Worksheet_Change(ByVal Target As Range)
    Adres = Target.Address
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Ici le test
    MsgBox Adres
    'S'il n'est pas bon, tu retournes sur 
        Range(Adres).ClearContents
        Range(Adres).Select
    End Sub
    Quand tu modifies le contenu de la cellule, tu n'as son contenu qu'après l'avoir quittée. Si tu mémorises l'adresse que tu viens de quitter, dans SelectionChange tu pourras traiter les erreurs de saisie.
    Juste une idée

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Je te remercie pour ton code mais je me suis mal expliqué, la cellule que je veux effacer est la cellule voisine de la cellule modifiée.

    Ex : je modifie L7 et j'efface M7.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Select Case Target.Column
                    
                Case DONNEES_COLONNE_JOUR, DONNEES_COLONNE_MOIS, DONNEES_COLONNE_ANNEE
                    Call shtDonnees.DeprotegerFeuille
                    Call CopierDonneesCalculAge(Target)
                    Call shtDonnees.ProtegerFeuille
                    
                Case DONNEES_COLONNE_NIVEAU
                    shtDonnees.Range(Cells(Target.Row, DONNEES_COLONNE_GROUPE), Cells(Target.Row, DONNEES_COLONNE_GROUPE)).ClearContents
                    Range("M7").ClearContents 'Call Macro2
                Case Else
                    'Ne rien faire
            End Select
    chez moi ce code fonctionne.
    où est déclarée la macro2?

    cordialement

Discussions similaires

  1. Répartir le contenu d'une cellule sur plusieurs lignes
    Par Sandrineboubou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/02/2019, 09h45
  2. [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
  3. [XL-2003] Répartir le contenu d'une cellule sur plusieurs lignes
    Par Leehan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/10/2012, 15h06
  4. effacer le contenu d'une cellule
    Par tiyolx dans le forum Excel
    Réponses: 8
    Dernier message: 18/08/2008, 13h45
  5. Réponses: 4
    Dernier message: 22/01/2008, 16h59

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