Microsoft 365 Effacer une cellule lorsqu'elle est égale à une autre.

Alexandre_

XLDnaute Nouveau
Bonjour,

J'aimerai savoir si il est possible de, lorsque je met une valeur dans une cellules spécifiques (ex NY38),effacer toutes les cellules ayant la même valeur que celle rentrer dans la cellule NY38 ?

Cordialement.
 

xUpsilon

XLDnaute Accro
Bonjour,

Par VBA un algo du genre :
VB:
Pour toutes les feuilles du classeur
    Pour toutes les colonnes de la feuille
        Pour toutes les lignes de la feuille
            Si valeurCelluleSélectionnée = valeurTest Alors valeurCelluleSélectionnée = ""
        Ligne suivante
    Colonne suivante
Feuille suivante

Sans plus de précisions ni fichier joint, je m'arrêterai là.

Bonne journée,
 

Alexandre_

XLDnaute Nouveau
Bonjour,

Par VBA un algo du genre :
VB:
Pour toutes les feuilles du classeur
    Pour toutes les colonnes de la feuille
        Pour toutes les lignes de la feuille
            Si valeurCelluleSélectionnée = valeurTest Alors valeurCelluleSélectionnée = ""
        Ligne suivante
    Colonne suivante
Feuille suivante

Sans plus de précisions ni fichier joint, je m'arrêterai là.

Bonne journée,
Bonjour,

En fait j'ai un tableau avec un planning de production avec différentes opération se faisant au fil des semaines.
Et j'aimerais en fait que lorsque je met un certain numéro de commande (ex: Fraisage19) dans la ligne désigné au contrôle de la pièce toute les autres cellules contenant Fraisage19 soit effacer pour signifier que la pièce est bien fini.
 

Alexandre_

XLDnaute Nouveau
Bonjour @Alexandre_ et bienvenu sur XLD
Bonjour @xUpsilon

Sans fichier point de salut.... ;)
Variante de pas de bras pas de chocolat... :D
Bonjour, je vous joint un exemple de tableau semblable au mien en bien plus petit.
En gros il faudrait, si possible, trouver un moyen pour que lorsque je met une valeur dans la ligne "contrôle" peu importe la colonne toute les cellules qui ont la même valeur soit effacer.

J'avais essayé quelque chose de ce type là:

Sub ClearContentsIfContains()

Dim cell, rng As Range
Set rng = Range("A6:TA37")

For Each cell In rng
If cell.Value = ("NY38") Then
cell.ClearContents
Else
End If
Next cell

End Sub
 

Pièces jointes

  • Classeur2.xlsx
    14 KB · Affichages: 4

xUpsilon

XLDnaute Accro
Re,

Tu n'étais pourtant pas loin, essayer ceci :
VB:
Sub ClearContentsIfContains()

Dim cell, rng As Range
Set rng = Range("A6:TA37")

For Each cell In rng
    If cell.Value = Range("NY38") Then
        cell.ClearContents
    End If
Next cell

End Sub

Bonne journée,
 

Alexandre_

XLDnaute Nouveau
Re,

Tu n'étais pourtant pas loin, essayer ceci :
VB:
Sub ClearContentsIfContains()

Dim cell, rng As Range
Set rng = Range("A6:TA37")

For Each cell In rng
    If cell.Value = Range("NY38") Then
        cell.ClearContents
    End If
Next cell

End Sub

Bonne journée,
Re,
Je vous remercie ca à bien marché, au début ca ne marchais pas car j'avais apporté des modifications dans mon tableau et ce n'était donc plus NY38 mais NY34.

J'abuses peut être un peu mais serait possible de faire ca pour toute la ligne 38 ?
Que ca change que je mette dans NY38 ou bien NL38.
 
Dernière édition:

xUpsilon

XLDnaute Accro
Re,

Un peu usine à gaz à mon avis mais fonctionne (je me suis arrêté à NY) :
VB:
Sub ClearContentsIfContains()

Dim cell, rng As Range
Set rng = Range("A6:TA37")
Set rConditions = Range("A38:NY38")

For Each cell In rng
    For Each val in rConditions
        If cell.Value = val.Value Then
            cell.ClearContents
        End If
    Next val
Next cell

End Sub

Sinon, pour effectuer ce genre d'opération plus rapidement, j'aurais tendance à passer par un Array VBA, qui est un objet plus rapide pour boucler/changer des valeurs.

Bonne journée,
 

Phil69970

XLDnaute Barbatruc
Re

Une proposition
==> des qu'une cellule de la ligne 38 change alors la macro s’exécute automatiquement

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim cell, rng As Range
Set rng = Range("A6:TA37")
If Not Application.Intersect(Target, Rows(38)) Is Nothing Then
    For Each cell In rng
        If cell.Value = Cells(38, Target.Column) Then
            cell.ClearContents
        End If
    Next cell
End If
End Sub

Merci de ton retour
 

Alexandre_

XLDnaute Nouveau
Re

Une proposition
==> des qu'une cellule de la ligne 38 change alors la macro s’exécute automatiquement

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim cell, rng As Range
Set rng = Range("A6:TA37")
If Not Application.Intersect(Target, Rows(38)) Is Nothing Then
    For Each cell In rng
        If cell.Value = Cells(38, Target.Column) Then
            cell.ClearContents
        End If
    Next cell
End If
End Sub

Merci de ton retour
Bonjour, rien ne se passe lorsque j'applique votre programme, même lorsque je la lance manuellement il n'y a rien
 

Alexandre_

XLDnaute Nouveau
Re,

Un peu usine à gaz à mon avis mais fonctionne (je me suis arrêté à NY) :
VB:
Sub ClearContentsIfContains()

Dim cell, rng As Range
Set rng = Range("A6:TA37")
Set rConditions = Range("A38:NY38")

For Each cell In rng
    For Each val in rConditions
        If cell.Value = val.Value Then
            cell.ClearContents
        End If
    Next val
Next cell

End Sub

Sinon, pour effectuer ce genre d'opération plus rapidement, j'aurais tendance à passer par un Array VBA, qui est un objet plus rapide pour boucler/changer des valeurs.

Bonne journée,
Bonjour,
j'ai essayer votre programme et mon excel mouline pendant longtemps quand je lance le programme. Je ne connais pas Array VBA donc je ne sais pas si ca marcherai mieux.
 

Phil69970

XLDnaute Barbatruc
@Alexandre_

Bonjour, rien ne se passe lorsque j'applique votre programme, même lorsque je la lance manuellement il n'y a rien

Pourtant cela fonctionne bien sur mon PC à condition de copier le code au bon endroit;)

Une proposition
==> des qu'une cellule de la ligne 38 change alors la macro s’exécute automatiquement

1696390340803.png
 

Discussions similaires

Réponses
4
Affichages
211

Statistiques des forums

Discussions
312 210
Messages
2 086 277
Membres
103 170
dernier inscrit
HASSEN@45