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

effacer certaines valeurs (en vba)

14 réponses
Avatar
j-pascal
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP

10 réponses

1 2
Avatar
MichDenis
Est-ce que ton accolade fait parti d'une formule ?

Si oui, il s'agit d'une formule matricielle ... il va falloir
que tu expliques davantage pourquoi tu veux les enlever ...



"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP
Avatar
isabelle
bonjour JP,

essaie comme ça,

Sub effacerSigne()
Dim c As Variant
Application.ScreenUpdating = False
Range("AC4:AC23").Select
For Each c In Selection
If c.Value = "{" Then c.Delete
Next
Application.ScreenUpdating = True
End Sub

isabelle

Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP


Avatar
Pierre Fauconnier
Bonjour

Fais bien la différence entre c.value et c.formula, ce n'est pas la même
chose
Si tu as le signe { dans une formule, c.value ne le trouvera pas

Autre chose. Rien à voir avec ton problème:
Tu n'es pas obligé d'utiliser
range("ac4:ac23").select avant de boucler. De plus, plutôt que de
dimensionner c comme variant, utilise un objet range. Tu peux utiliser ceci

dim c as range

for each c in range("ac4:ac23")
...
...
next c

Ok?

"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP


Avatar
j-pascal
Bonjour isabelle,

Ca marche, mais si les signes "{" sont éparpillés, ce qui est étonnant c'est
qu'il faille relance la proc !
Par ailleurs, cela m'afface la mise en forme (motif)

A+ ?

JP

essaie comme ça,

Sub effacerSigne()
Dim c As Variant
Application.ScreenUpdating = False
Range("AC4:AC23").Select
For Each c In Selection
If c.Value = "{" Then c.Delete
Next
Application.ScreenUpdating = True
End Sub

isabelle

Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer
les cellules contenant le signe "{". J'ai essayé, en vain, ce qui
suit : Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP




Avatar
j-pascal
Bonjour Pierre,

En fait peu importe le signe ; j'aurais dû éviter de prendre le "{" qui
prête à confusion avec les formules matricielles (sujet encore chaud dans
mon esprit ;-) ). Mon collègue à qui je destinais le "tuto" que tu as vu a
eu du mal à s'endormir ! Bon signe, non ?

J'ai bien noté de ne pas utiliser range("ac4:ac23").select avant de boucler.
A propos de la définition des variables, j'avais prévu large avec "variant"
mais en général j'ajuste ma proc quand ça marche. Je ne suis pas toujours
très à l'aise avec ces définitions de variables..

PS : Au départ, j'avais utilisé ceci :
Dim Rg As Range, C As Range
Set Rg = Worksheets(1).Range("AC4:AC23")

Application.ScreenUpdating = False
For Each c In Rg.

Comme ça ne fonctionnait pas, je suis passé à autre chose.

JP


Fais bien la différence entre c.value et c.formula, ce n'est pas la
même chose
Si tu as le signe { dans une formule, c.value ne le trouvera pas

Autre chose. Rien à voir avec ton problème:
Tu n'es pas obligé d'utiliser
range("ac4:ac23").select avant de boucler. De plus, plutôt que de
dimensionner c comme variant, utilise un objet range. Tu peux
utiliser ceci
dim c as range

for each c in range("ac4:ac23")
...
...
next c

Ok?

"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer
les cellules contenant le signe "{". J'ai essayé, en vain, ce qui
suit : Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP




Avatar
Youky
si la ou les cellules comportent plusieurs caractères
Youky
tx = "*" & "{" & "*"
For Each c In Range("ac4:ac23")
If c.Value Like tx Then c.Value = ""
Next

"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP


Avatar
j-pascal
Bonjour Youky,

Non, non il n'y a qu'un seul caractère par cellule, mais les cellules
contenant ce caractère sont disséminées (je veux dire non adjacentes) dans
la plage.

JP
wrote:
si la ou les cellules comportent plusieurs caractères
Youky
tx = "*" & "{" & "*"
For Each c In Range("ac4:ac23")
If c.Value Like tx Then c.Value = ""
Next

"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer
les cellules contenant le signe "{". J'ai essayé, en vain, ce qui
suit : Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP




Avatar
j-pascal
Bonsoir,

MichDenis wrote:
Est-ce que ton accolade fait parti d'une formule ?

Si oui, il s'agit d'une formule matricielle ... il va falloir
que tu expliques davantage pourquoi tu veux les enlever ...


Non, non il ne s'agit pas d'une formule matricielle, j'aurais dû prendre un
autre signe comme exemple. Désolé.

En fait j'ai une plage et certaines des cellules de cette plage contiennent
une lettre. Je ne veux supprimer que cette lettre, sachant que les cellules
la contenant sont éparpillées dans la plage. Imaginons une plage contenant
10 "toto" et 5 "TITI" (éparpillés) et je veux supprimer que les "TITI".

JP

"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP


Avatar
MichDenis
Cette ligne de code est suffisante :

Remplace Feuil2 par le nom de la feuille (codename)

Feuil2.Range("AC4:AC23").Replace "*{*", ""


"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP
Avatar
MichDenis
Question originale :

| J'ai une plage qui contient différents signes, je souhaite effacer les
| cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

| Je ne veux supprimer que cette lettre

Il faut être consistant dans ta demande


En remplaçant Feuil2 par le codename de ta feuille

'Efface tout le contenu de la cellule.
Feuil2.Range("AC4:AC23").Replace "*{*", ""
OU
'Efface seulement le symbole en trop
Feuil2.Range("AC4:AC23").Replace "{", ""



"j-pascal" a écrit dans le message de news:
%
Bonsoir,

MichDenis wrote:
Est-ce que ton accolade fait parti d'une formule ?

Si oui, il s'agit d'une formule matricielle ... il va falloir
que tu expliques davantage pourquoi tu veux les enlever ...


Non, non il ne s'agit pas d'une formule matricielle, j'aurais dû prendre un
autre signe comme exemple. Désolé.

En fait j'ai une plage et certaines des cellules de cette plage contiennent
une lettre. Je ne veux supprimer que cette lettre, sachant que les cellules
la contenant sont éparpillées dans la plage. Imaginons une plage contenant
10 "toto" et 5 "TITI" (éparpillés) et je veux supprimer que les "TITI".

JP

"j-pascal" a écrit dans le message de news:
%
Bonjour,

J'ai une plage qui contient différents signes, je souhaite effacer les
cellules contenant le signe "{". J'ai essayé, en vain, ce qui suit :

Option Explicit
Sub effacerSigne()
Dim c As Variant

Application.ScreenUpdating = False

Range("AC4:AC23").Select

For Each c In Selection

If c.Value = "{" Then
Selection.Clear.contents
End If

Next

Application.ScreenUpdating = False

End Sub


Je vous remercie d'avance pour vos (éventuelles) réponses,

JP


1 2