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 :

Action supprime efface nue autre cellule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 108
    Par défaut Action supprime efface nue autre cellule
    Bonjour
    Je voudrais faire cette action quand je supprime une donnée de la colonne B:B ex. B2 ça efface sur la même ligne la celllule H2 ou B10 supprime H10 etc.
    Merci

  2. #2
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour

    mets ceci dans ta feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    On Error Resume Next
    If Not Application.Intersect(Target, [B:B]) Is Nothing Then
    If Target = "" Then Target.Offset(0, 6).ClearContents
    End If
     
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un exemple sur le module de la feuille :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        ' déclaration
        Dim objWks As Worksheet
        Dim strSheet As String
     
        ' affectation
        strSheet = ActiveSheet.Name
        Set objWks = ActiveWorkbook.Worksheets(strSheet)
     
        ' suppression
        If Target.Column = 2 Then
            If Target.Value = "" Then
                objWks.Range("H" & Target.Row).Clear
            End If
        End If
    End Sub
    Philippe

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Même s'il ne va entrer qu'une seule fois dans cette procédure du fait de l"ecriture sur une autre colonne, ne pas oublier de neutraliser la détection de l'événement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     Application.EnableEvents = False
     With Target
      If .Column = 2 Then .Offset(0, 6).ClearContents
     End With
     Application.EnableEvents = True
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 108
    Par défaut Action supprime efface nue autre cellule
    Merci pour le code
    mais comment ajouter à ce code l'action de supprimer la colonne 6, 7 , 8?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
     Application.EnableEvents = False
     With Target
      If .Column = 2 Then .Offset(0, 6).ClearContents
     End With
     Application.EnableEvents = True
    End Sub
    Merci

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Citation Envoyé par Philippe76 Voir le message
    Merci pour le code
    mais comment ajouter à ce code l'action de supprimer la colonne 6, 7 , 8?
    Pourquoi tu ne poses pas la bonne question directement ?
    Tu remplaces la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Column = 2 Then .Offset(0, 6).ClearContents
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Column = 2 Then .Offset(0, 4).Resize(1, 3).ClearContents
    Offset(ligne, colonne) est le déplacement par rapport à la colonne 2 et Resize(ligne, colonne) redimensionne.

    Attention : Soit tout de même prudent avec ce type de procédure où l'on fige les adresses, parce-que si on insère des colonnes entre B et H ton code doit être retravaillé et si cette insertion se déroule dans 6 mois ou 1 an, tu va chercher des heures pour savoir d'où cela vient.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 108
    Par défaut Action supprime efface nue autre cellule
    Ok merci
    Mais maintenant dans ce code j'ai un problème quand j'écris dans la colonne 2 une date s'écrit dans la colonne 5 (jusque la c'est bon), mais quand je supprime se que je viens d'écrire cela supprime bien les cellule colonne 3,4,5 mais cela me réecrit la date se que je ne veux pas
    Comment l'adapter ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 2 And Target.Count = 1 Then
            Target.Offset(0, 3).Value = Now
        End If
            With Target
                If .Column = 2 Then .Offset(0, 1).Resize(1, 2).ClearContents
            End With
    End Sub
    Merci

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Qu'ai je mis en première ligne et en dernière du code que j'ai affiché dans ma première réponse ?
    Place les et tu verras, à mon avis il n'y aura plus de problème

    [EDIT] J'ai parlé trop vite.
    Tu écris la date dans la cellule de la 5ème colonne (E) or tu effaces la 3ème et la quatrième
    Pour la ligne 4, Date en E4 et efface C$4:$D$4

    Bonjour,
    J'ai pas bien compris ce que tu veux faire.
    La procédure événementielle dans ce cas précis, ne réagit que si tu change une valeur en colonne B.
    Tu sembles vouloir à la fois effacer et écrire une date ???
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 108
    Par défaut
    Excuse moi
    Oui j'écris en colonne B cela doit me mettre la date en colonne E
    par contre je me suis trompé en entrant la donnée de la colonne B je la supprime il faudrait aussi que ça me supprime la date.
    Merci

    Je relance ma demande
    est il possible dans les évenements de dire si j'écris dans la colonne 2 je mais une date si il n'y a rien ne rien mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Worksheet_Change(ByVal Target As Range)
            If Target.Column = 2 Then
                   Target.Offset(0, 3).Value = Now 'ecrit la date en colonne 5
            If Target.Column = "" Then
                   Target.Offset(0, 3).Value = "" 'n'écrit rien en colonne 5
            End If
    End Sub

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    En vba comme en informatique en général tout est possible. C'est une question de temps et de budget.
    Encore faut-il savoir ce que l'on cherche à faire.

    Bonjour,
    J'ai mis Date et pas Now parce-que Now, c'ets la date et l'heure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
     Application.EnableEvents = False
     With Target
      If .Column = 2 And .Count = 1 Then
      Select Case Len(.Value)
        Case Is > 0
         .Offset(0, 9) = Date ' Ecrit la date en colonne 5
        Case Else
         .Offset(0, 9).ClearContents
      End Select
      End If
     End With
     Application.EnableEvents = True
    End Sub
    Autre possibilité, plus courte mais plus lent parce-que le IIF évalue les deux arguments.
    Mais cela ne se sentira pas dans cette procédure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
     Application.EnableEvents = False
     With Target
      If .Column = 2 And .Count = 1 Then
        .Offset(0, 9) = IIf(Len(.Value), Date, vbNullString)
      End If
     End With
     Application.EnableEvents = True
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Supprimer Chiffres d'une cellules par rapport à une autre
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 24/05/2013, 14h56
  2. [XL-2003] Effacer toute la ligne suite à l'action d'effacer la valeur d'une cellule
    Par will-1981 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/09/2010, 14h40
  3. [MySQL] utilisation d'un checkbox pour supprimé modifier ou autre action
    Par Whinespirit dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/06/2010, 23h36
  4. Réponses: 6
    Dernier message: 01/05/2010, 17h39
  5. Action supprimer valeur de cellule
    Par francky356 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/08/2008, 15h58

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