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 :

XL 2007: Comment vider certaines cellules si on l'on vide une?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut XL 2007: Comment vider certaines cellules si on l'on vide une?
    Bonjour le forum,

    J'ai une fonction qui permet de remplir des cellules (de différentes colonnes "*Type de Champs") par "Text" si une valeur de plusieurs colonnes "Type Texte", "Format Texte", etc est remplie, je veux ajouter une condition qui me permet de vider automatiquement ces cellules dès qu'on vide la cellule déjà remplie, J'ai essayé avec ActiveCell.value="", cela marche pour les cellules du type liste déroulante, mais ne marche pas pour les cellules normales.

    Voilà mon code placé dans ThisWorkbook:

    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
    Private Sub Workbook_SheetChange(ByVal Sht As Object, ByVal Target As Range)
        Dim NoCol As Integer
        Dim Title As String
     
        If Cells(1, Target.Column).Value Like "*Texte*" Then
            Application.EnableEvents = False
                For NoCol = 1 To Columns(Split(Sh.UsedRange.Address, "$")(3)).Column
                    Title = Sht.Cells(1, NoCol)
                    If Title Like "*Type de Champs" Then
                        Sht.Cells(Target.Row, NoCol).Value = "Texte"
                        If (Sht.Cells(Target.Row, NoCol).Value = "Texte") And ActiveCell = "" Then
                            Sht.Cells(Target.Row, NoCol).Value = ""
    '************* Ici j'ai ajouté plusieurs tests mais en vain !                        
                        End If
                    End If
                Next
            Application.EnableEvents = True
        End If
    Quelqu'un peut m'aider svp ?

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonjour,

    logiquement c'est dans l'évènement Change !
    Tester ensuite si la colonne de Target correspond bien et si Target est vide, alors effacer les autres cellules …

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut
    Bonjour Marc-L,

    le résultat de mon code est que quand je saisie un texte dans une des cellules, il affiche et masque "Texte" sur les autres cellules en une fraction de seconde !
    Donc j'ai ajouté à la condition ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not (Cells(1, Target.Column).Value Like "Format Texte") And Not (Cells(1, Target.Column).Value Like "Type Texte") And (Sht.Cells(Target.Row, NoCol).Value = "Texte") And ActiveCell = "" Then
                            Sht.Cells(Target.Row, NoCol).Value = ""
                        End If
    Mais là l'action de vider les champs quand ces 2 colonnes sont vides ne marche pas, donc peux tu stp me dire comment je peux tester avec Target?

    Merci d'avance

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    La grossière erreur est d'utiliser ActiveCell ! Quelle est la cellule active lors du déclenchement de l'évènement ?

    Comme je l'ai déjà indiqué : « si Target est vide » …


  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut
    C'est pas croyable comme j'ai tourné autour de plusieurs expressions et que c'était aussi simple que ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If (Sht.Cells(Target.Row, NoCol).Value = "Texte") And Target = "" Then
                            Sht.Cells(Target.Row, NoCol).Value = ""                       
                        End If
    Merci beaucoup Marc, bonne fin de journée

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/01/2015, 17h43
  2. [XL-2007] Compléter certaines cellules selon le choix fait dans une liste déroulante
    Par Dart974 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/10/2014, 14h59
  3. [CR XI] Comment sommer certains champs et pas d'autres depuis une même table source
    Par MaasDVSue dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 17/10/2014, 11h52
  4. Réponses: 3
    Dernier message: 20/04/2010, 09h31
  5. Réponses: 8
    Dernier message: 19/07/2007, 16h40

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