Microsoft 365 Suppression NA 2 conditions

  • Initiateur de la discussion Initiateur de la discussion Lascaux
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lascaux

XLDnaute Nouveau
Bonjour,


j'ai besoin de supprimer le contenu d'une cellule en fonction d'une condition.
dans mon exemple : si F2 =Oui je supprime le contenu de A2. (cela fonctionne sur l'exemple)
mais cela doit supprimer uniquement si A2 est égale à NA

et je dois faire ce test sur les colonnes A à E.

merci d'avance de votre aide.
 

Pièces jointes

Solution
Bonjour Lascaux, et bienvenu sur XLD,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Or Target.Value = "" Or Target.Value = "Non" Then Exit Sub
    If Not Intersect(Target, [F2:F1000]) Is Nothing Then
         Application.ScreenUpdating = False
         For C = 1 To 5
            If IsError(Cells(Target.Row, C)) Then Cells(Target.Row, C) = ""
         Next C
    End If
End Sub
La macro s'exécute lorsqu'on choisit Oui en colonne F.
Evidemment il faut activer les macros.
Bonjour Lascaux, et bienvenu sur XLD,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Or Target.Value = "" Or Target.Value = "Non" Then Exit Sub
    If Not Intersect(Target, [F2:F1000]) Is Nothing Then
         Application.ScreenUpdating = False
         For C = 1 To 5
            If IsError(Cells(Target.Row, C)) Then Cells(Target.Row, C) = ""
         Next C
    End If
End Sub
La macro s'exécute lorsqu'on choisit Oui en colonne F.
Evidemment il faut activer les macros.
 

Pièces jointes

Bonjour, ah pris de vitesse par sylvanu
mais une autre solution à toi de voir... il suffit d'y ajouter un bouton ou de l'actionner par le menu développeur

Sub DeleteNA()
Dim CurrentValue
Dim vCell As Range
Dim rRange As Range
Set rRange = Range("A1", Range("E1").End(xlDown))
For Each vCell In rRange
If Application.WorksheetFunction.IsNA(vCell) Then
If vCell.Offset(, 6 - vCell.Column) = "OUI" Then
vCell = ""
End If
End If
Next
End Sub
 
Dernière édition:
Avec le filtre automatique :
VB:
Sub Effacer()
Application.ScreenUpdating = False
With [A1:F1000]
    .AutoFilter 6, "Oui" 'filtre automatique
    On Error Resume Next
    .SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 16) = ""
    .AutoFilter 'ôte le filtre
End With
End Sub
 

Pièces jointes

Dernière édition:
Bonsoir,

@sylvanu sélectionne A3:B3 et efface... Faut corriger ça.

A+
Dans une 1ère version déposée sur le Forum... qui a subi une mauvaise recopie de code erroné, j'effaçais uniquement la colonne A
La nouvelle version corrigée est plus complète en balayant tout le tableau
A l'auteur du post en question d'adapter le code selon ses besoins mais l'essentiel est là !


1738614419892.png


1738614443412.png
 

Pièces jointes

Dernière édition:
Bonjour,


Il dit : tu sélectionnes la plage A3:B3 avec ta souris, puis tu appuies sur la touche <Suppr> et là ça bug, mas il suffit de couper la première ligne de la macro en deux pour corriger le problème. 😉
Et pourquoi ne pas faire une suppression à la demande en définissant une plage dynamique comme je l'ai fait ou tout simplement une plage statique... ça nous évite du code dans feuille et la gestion évènementielle. Du reste on ignore l'origine des données et ce qui a provoqué ce #N/A... Cette fonction de suppression doit être initiée manuellement car nous avons une de décision OUI/NON => colonne F
 
Re,
Pour éviter cette possibilité d'erreur ( sélection de toute la ligne puis Supp ) autant l'éviter :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
    If Target.Value = "" Or Target.Value = "Non" Then Exit Sub
    If Not Intersect(Target, [F2:F1000]) Is Nothing Then
         Application.ScreenUpdating = False
         For C = 1 To 5
            If IsError(Cells(Target.Row, C)) Then Cells(Target.Row, C) = ""
         Next C
    End If
Fin:
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
492
Réponses
22
Affichages
1 K
Retour