Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro : remplacer le contenu d'une cellule

5 réponses
Avatar
Françoise
Bonsoir,

je veux faire une macro qui
a chaque fois qu'elle rencontre dans la colonne C une valeur différente de
"A", "B" ou "-"
Efface le contenu de toute la ligne
remplit la cellule C avec le mot "SDF"
et répète l'opération jusqu'à la fin des données
---
J'ai testé :
Sheets("Plan de montage").Select
Range("C1").Select

Do Until ActiveCell = ""
If ActiveCell <> "A" And ActiveCell <> "B" And ActiveCell <> "-" Then
Selection.EntireRow.ClearContents
ActiveCell.FormulaR1C1 = "SDF"
End If

Loop
----
Ca bloque sur ActiveCell......
Je ne vois pas pourquoi et n'y arrive pas
Merci de votre aide
Françoise

5 réponses

Avatar
anonymousA
re,

j'ai considéré que c'était un OU entre A , B et - selon ce que tu as écrit
(une valeur différente de "A", "B" ou "-")

Set rng = Range("C1:C" & [C65536].End(xlUp).Row)
comparaison = Array("A", "B", "-")

On Error Resume Next
For Each c In rng
trouve = Application.WorksheetFunction.Match(c.Value, comparaison, 0)
If Err.Number <> 0 Then
With c
.EntireRow.ClearContents
.Value = "SDF"
End With
Err.Clear
End If
Next

A+


Bonsoir,

je veux faire une macro qui
a chaque fois qu'elle rencontre dans la colonne C une valeur différente de
"A", "B" ou "-"
Efface le contenu de toute la ligne
remplit la cellule C avec le mot "SDF"
et répète l'opération jusqu'à la fin des données
---
J'ai testé :
Sheets("Plan de montage").Select
Range("C1").Select

Do Until ActiveCell = ""
If ActiveCell <> "A" And ActiveCell <> "B" And ActiveCell <> "-" Then
Selection.EntireRow.ClearContents
ActiveCell.FormulaR1C1 = "SDF"
End If

Loop
----
Ca bloque sur ActiveCell......
Je ne vois pas pourquoi et n'y arrive pas
Merci de votre aide
Françoise


Avatar
Hervé
Salut Fançoise,
Une variante tirée de l'exemple de Philippe car il est fatigué et t'as posté
un proc qui fait l'inverse de se que tu demande ;o) :

Sub SDF()
Dim Plage As Range
Dim Cel As Range

With Worksheets("Plan de montage")
Set Plage = .Range(.[C2], .[C65536].End(3))
End With

For Each Cel In Plage
Select Case Cel
Case "A", "B", "-"
'ne fait rien
Case Else
Cel.EntireRow.Clear
Cel.Value = "SDF"
End Select
Next Cel

Set Cel = Nothing
Set Plage = Nothing
End Sub

Hervé

"Françoise" a écrit dans le message
news:
Bonsoir,

je veux faire une macro qui
a chaque fois qu'elle rencontre dans la colonne C une valeur différente de
"A", "B" ou "-"
Efface le contenu de toute la ligne
remplit la cellule C avec le mot "SDF"
et répète l'opération jusqu'à la fin des données
---
J'ai testé :
Sheets("Plan de montage").Select
Range("C1").Select

Do Until ActiveCell = ""
If ActiveCell <> "A" And ActiveCell <> "B" And ActiveCell <> "-" Then
Selection.EntireRow.ClearContents
ActiveCell.FormulaR1C1 = "SDF"
End If

Loop
----
Ca bloque sur ActiveCell......
Je ne vois pas pourquoi et n'y arrive pas
Merci de votre aide
Françoise


Avatar
Philippe W.
Public Sub DetectColonneC()
Dim rngCell As Range
' Je suppose que la ligne 1 sert pour l'entête
For Each rngCell In Range(Cells(2, 3), Cells(Cells(65000, 3).End(xlUp).Row,
3))
Select Case rngCell.Value
Case "A", "B", "-" ' Case sensitive Majuscule ou Minuscule
rngCell.Value = "C"
End Select
Next rngCell
End Sub


Philippe


"Françoise" a écrit dans le message de
news:
Bonsoir,

je veux faire une macro qui
a chaque fois qu'elle rencontre dans la colonne C une valeur différente de
"A", "B" ou "-"
Efface le contenu de toute la ligne
remplit la cellule C avec le mot "SDF"
et répète l'opération jusqu'à la fin des données
---
J'ai testé :
Sheets("Plan de montage").Select
Range("C1").Select

Do Until ActiveCell = ""
If ActiveCell <> "A" And ActiveCell <> "B" And ActiveCell <> "-" Then
Selection.EntireRow.ClearContents
ActiveCell.FormulaR1C1 = "SDF"
End If

Loop
----
Ca bloque sur ActiveCell......
Je ne vois pas pourquoi et n'y arrive pas
Merci de votre aide
Françoise


Avatar
Philippe W.
Désolé, petite erreur

Public Sub DetectColonneC()
Dim rngCell As Range
' Je suppose que la ligne 1 sert pour l'entête
For Each rngCell In Range(Cells(2, 3), Cells(Cells(65000, 3).End(xlUp).Row,
3))
Select Case rngCell.Value
Case "A", "B", "-" ' Case sensitive Majuscule ou Minuscule
rngCell.Value = "SDF"
End Select
Next rngCell
End Sub

Philippe
"anonymousA" a écrit dans le message
de news:
re,

j'ai considéré que c'était un OU entre A , B et - selon ce que tu as écrit
(une valeur différente de "A", "B" ou "-")

Set rng = Range("C1:C" & [C65536].End(xlUp).Row)
comparaison = Array("A", "B", "-")

On Error Resume Next
For Each c In rng
trouve = Application.WorksheetFunction.Match(c.Value, comparaison, 0)
If Err.Number <> 0 Then
With c
.EntireRow.ClearContents
.Value = "SDF"
End With
Err.Clear
End If
Next

A+


Bonsoir,

je veux faire une macro qui
a chaque fois qu'elle rencontre dans la colonne C une valeur différente
de


"A", "B" ou "-"
Efface le contenu de toute la ligne
remplit la cellule C avec le mot "SDF"
et répète l'opération jusqu'à la fin des données
---
J'ai testé :
Sheets("Plan de montage").Select
Range("C1").Select

Do Until ActiveCell = ""
If ActiveCell <> "A" And ActiveCell <> "B" And ActiveCell <> "-" Then
Selection.EntireRow.ClearContents
ActiveCell.FormulaR1C1 = "SDF"
End If

Loop
----
Ca bloque sur ActiveCell......
Je ne vois pas pourquoi et n'y arrive pas
Merci de votre aide
Françoise




Avatar
Philippe W.
Prendre le temps de lire la question comme il faut:

Public Sub DetectColonneC()
Dim rngCell As Range
' Je suppose que la ligne 1 sert pour l'entête
For Each rngCell In Range(Cells(2, 3), Cells(Cells(65000, 3).End(xlUp).Row,
3))
Select Case rngCell.Value
Case "a", "b", "-" ' Case sensitive Majuscule ou Minuscule
Range(Cells(rngCell.Row, 1), Cells(rngCell.Row,
2)).ClearContents
rngCell.Value = "SDF"
End Select
Next rngCell
End Sub

Philippe


"Philippe W." a écrit dans le message de
news:%23ux%
Désolé, petite erreur

Public Sub DetectColonneC()
Dim rngCell As Range
' Je suppose que la ligne 1 sert pour l'entête
For Each rngCell In Range(Cells(2, 3), Cells(Cells(65000,
3).End(xlUp).Row,

3))
Select Case rngCell.Value
Case "A", "B", "-" ' Case sensitive Majuscule ou Minuscule
rngCell.Value = "SDF"
End Select
Next rngCell
End Sub

Philippe
"anonymousA" a écrit dans le
message

de news:
re,

j'ai considéré que c'était un OU entre A , B et - selon ce que tu as
écrit


(une valeur différente de "A", "B" ou "-")

Set rng = Range("C1:C" & [C65536].End(xlUp).Row)
comparaison = Array("A", "B", "-")

On Error Resume Next
For Each c In rng
trouve = Application.WorksheetFunction.Match(c.Value, comparaison,
0)


If Err.Number <> 0 Then
With c
.EntireRow.ClearContents
.Value = "SDF"
End With
Err.Clear
End If
Next

A+


Bonsoir,

je veux faire une macro qui
a chaque fois qu'elle rencontre dans la colonne C une valeur
différente



de
"A", "B" ou "-"
Efface le contenu de toute la ligne
remplit la cellule C avec le mot "SDF"
et répète l'opération jusqu'à la fin des données
---
J'ai testé :
Sheets("Plan de montage").Select
Range("C1").Select

Do Until ActiveCell = ""
If ActiveCell <> "A" And ActiveCell <> "B" And ActiveCell <> "-" Then
Selection.EntireRow.ClearContents
ActiveCell.FormulaR1C1 = "SDF"
End If

Loop
----
Ca bloque sur ActiveCell......
Je ne vois pas pourquoi et n'y arrive pas
Merci de votre aide
Françoise