XL 2016 [RESOLU] Modifier cellule si differente d'un mots

Chessnocoma

XLDnaute Junior
Bonjour à tous,

Je cherche actuellement à modifier les informations des cellules contenus dans une colonne. Si elles sont différentes du mots "Retraite", sans tenir compte de la casse, je souhaite remplacer le contenu par "autre motif"

Est ce que vous sauriez comment procéder ?

Merci à vous,

A bientôt,

Jessy
 

Chessnocoma

XLDnaute Junior
Bonjour roro

Et merci de ta réponse.
En réalité, je cherche à ce que sur la colonne J uniquement, si le contenu = Retraite alors rien ne se passe sinon le contenu devient "autre motif"

J'ai pu tester ta macro mais elle remplace tout les "retraite" en autre motif"

J'étais parti sur quelque chose comme ça, mais ca ne fonctionne pas :

(Désolé c'est vraiment mal codé et ca ne fonctionne pas ^^)

VB:
Sub Transfo()
Dim cell As Range
For Each cell In Range(J:J)
If cell.Value <> "Retraite" Then
cell.Value = "Autre motif"
End If
Next cell
End Sub

A bientôt,



Jessy
 
Dernière édition:

roro69

XLDnaute Impliqué
Re a essayer
Code:
Sub Rech()
Dim r As Long, ws As Worksheet
Set ws = Sheets("NomdeTaFEUILLE")
For r = ws.Cells(Rows.Count, "J").End(xlUp).Row To 2 Step -1
    If ws.Range("J" & r).Value <> "Retraite" Then
        ws.Range("J" & r).Value = "Autre motif"
    End If
Next r
End Sub
N'oublie pas de change le nom de la variable sheets
A ++
 

job75

XLDnaute Barbatruc
Bonjour Chessnocoma, roro69,

Avec un tableau VBA (matrice) c'est beaucoup plus rapide sur un grand tableau :
Code:
Sub Remplace()
Dim t, i&
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData 'si la feuille est filtrée
With Range("J1", Range("J" & Rows.Count).End(xlUp))
    t = .Value 'matrice, plus rapide
    If Not IsArray(t) Then Exit Sub 'si une seule cellule
    For i = 2 To UBound(t)
        If t(i, 1) <> "" Then If LCase(t(i, 1)) <> "retraite" Then t(i, 1) = "Autre motif"
    Next
    .Value = t 'restitution
End With
End Sub
A+
 

Discussions similaires