Effacer des cellules sous Excel

Résolu
gorby1980 -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une question concernant Excel 2010. J'ai une base de données contenant plusieurs colonnes. En dehors de la première colonne, les autres colonnes sont constituées de listes déroulantes.

J'aurais voulu savoir s'il était possible que toutes les listes déroulantes d'une même ligne soient automatiquement remises à zéro quand on efface la première cellule de la ligne.

Merci d'avance

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    essaies ce code (ta 1° colonne est A)

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("A")) Is Nothing Then
         If IsEmpty(Target) Then
              Application.EnableEvents = False
                   Rows(Target.Row).ClearContents
              Application.EnableEvents = False
         End If
    End If
    End Sub


    pour installer
    fais un copier de ce code
    clic droit sur l'onglet de la ta feuille-visualiser le code
    coller

    il faut bien sûr que les macros soient autorisées !!!! (connais pa XL2010)
    2
    1. gorby1980
       
      Etrange. Ca a marché une fois et puis plus rien ??
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      un copié-collé non modifié par michel.
      Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Target, Columns("A")) Is Nothing Then
           If IsEmpty(Target) Then
                Application.EnableEvents = False
                     Rows(Target.Row).ClearContents
                Application.EnableEvents = True
           End If
      End If
      End Sub
      0
    3. gorby1980
       
      Ca marche. Nickel !
      0
  2. gorby1980
     
    Certes, ça marche, mais ce n'est pas ce que je veux. Je prépare un fichier que d'autres vont utiliser. Il me faudrait un code qui remette à zéro les listes déroulantes quand quelqu'un efface le contenu de la première cellule de la ligne.
    0
  3. gorby1980
     
    Ou, autre possiblité, la première ligne de chaque liste déroulante est une ligne vierge. Savoir s'il est possible, lorsque la première cellule de la ligne est vidée, que chaque liste déroulante sélectionne automatiquement cette ligne vierge.

    Note : la mise en place peut être complexe, pourvu que ce soit ensuite simple à utiliser pour les utilisateurs futurs.
    0
  4. gorby1980
     
    (censuré) de boss !!

    Maintenant, il veut que je rajoute des colonnes avec des formules basées sur le contenu des listes déroulantes. Et avec protection de la feuille. Et évidemment ça coince avec le code Visual que j'ai copié.

    Est-ce qu'il faut que j'ouvre un nouveau sujet pour aborder cette suite ?
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      non,
      mais joins un classeur et explique le caprice de la Diva

      pour joindre une pièce
      mettre le classeur sans données confidentielles en pièce jointe sur
      https://www.cjoint.com/
      et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
      0
    2. gorby1980
       
      http://cjoint.com/?ALciGzIQZ2b

      J'ai enlevé provisoirement la macro. Donc, à la base, les colonnes C et E étaient des listes déroulantes. Ma "diva" (ça lui va bien) a fait la demande que ces deux colonnes soient liées à la colonne D (en remplissant la colonne D, les colonnes C et E se remplissent selon l'onglet Modifications et inversément). De même, des formules permettent de remplir les colonnes J-T à partir de la colonne I.

      Il faut protéger la feuille afin que les colonnes à formules ne puissent pas être accidentellement modifiées, mais la protection bloque ta macro et, sans protection, la macro efface les formules, ce qu'il faudrait éviter.
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,

      pour confirmation: on ne supprime les données de la ligne que colonnes B, D, F,G,H ?

      des trucs à faire ce matin, donc, sois patient (un bisou pour la diva)
      0
    4. gorby1980
       
      Il faudrait en effet que, lorsqu'on supprime le contenu de la colonne A, ça efface le contenu des colonnes B, D, F, G, H et I.

      Prends ton temps.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    re,

    au passage,merci Eric d'avoir corrigé mon étourderie habituelle ;o) (j'vieillis mal)

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Derlig As Integer, Lig As Integer
    
    Derlig = Columns("A").Find("*", , , , , xlPrevious).Row + 1
    If Not Intersect(Target, Range("A2:A" & Derlig)) Is Nothing Then
         If IsEmpty(Target) Then
                   Application.EnableEvents = False
                   Lig = Target.Row
                   Cells(Lig, "B") = ""
                   Cells(Lig, "D") = ""
                   Range(Cells(Lig, "F"), Cells(Lig, "I")) = ""
                   Application.EnableEvents = True
         End If
    End If
    End Sub

    et la macro de secours à mettre dans un coin
    Sub SOS()
    Application.EnableEvents = True
    End Sub
    0
    1. gorby1980
       
      Génial. Ca marche. J'espère que ma diva sera satisfaite.

      Par contre, excuse mon ignorance, mais que fait la macro de secours ?
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      si pour une raison quelconque on sort de la macro alors que enableevents (events=événements)est activé (true), plus aucune macro ne fonctionne. c'est d'ailleurs l"'étourderie qu'avait signalé Eric, d'où cette macro SOs

      Bon WE, je coche "résolu"
      0
    3. gorby1980
       
      OK merci. En plus, la diva est satisfaite ^^
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      profite en pour demander une prime! ;o))
      0
  7. Mrfrize Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   6
     
    Tu selectionnes la ligne entiere que tu veux remettre a 0 en cliquant sur le numéro de ligne. et tu apuis sur sup. Normalement ca devrais marcher. Je ne connais pas le 2010 mais sur toute les autres versions ca marche.
    -1
  8. Mrfrize Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   6
     
    Essaye cette macro,

    Sub supligne()

    Dim Dligne As Integer
    Dim i As Long

    'determine la derniere ligne du tableau de la feuille
    Dligne = ActiveSheet.UsedRange.Rows.Count

    'Efface les valeurs de toute la ligne quand la cellule Ai est vide
    For i = 1 To Dligne Step 1
    If Cells(i, 1).Value = "" Then Rows(i).ClearContents
    Next i

    End Sub

    Elle efface les lignes dont la premiere cellule est vide.
    -2
    1. Mrfrize Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   6
       
      Pourquoi vous dénigrez ma macro? Il y a quelque chose qui ne vas pas dedans? Je l'ai essayé elle marche tres bien.

      Si quelque chose ne vas pas dite le moi que je progresse.
      Merci d'avance
      0
    2. gorby1980
       
      Ce n'est en tout cas pas moi qui ait noté ta réponse.
      0