Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 30/06/2009, 16h03   #1
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
Par défaut Supprimer un mot dans une cellule



Dans un fichier Excel, j'ai des cellules avec un mot que je voudrais supprimer :

Dans la colonnes B, j'ai des renseignements dans les cellules mais c'est renseignements ne correspondent pas forcement à ce que je veu
dans certaines cellules, je voudrais supprimer un mot qui est recurant dans plusieurs cellules de la colonne.

Dans plusieurs cellules, j'ai le mot "Presses" que je voudrais supprimer

Par exemple, la cellule qui contien le texte "12 Presses mp" devienne "12 mp"

Merci de votre aide
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 16h05   #2
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Bonjour,
utilise find pour trouver le mot en question (je te laisse lire l'aide excel, vu les infos je ne peux pas faire mieu que son exemple)

puis
au lieu de c.Value = 5
tu met
Code :
c= replace(c, "ton mot", "")
Pour la déclaration des variable c est un range

E
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 16h27   #3
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
Merci

Mais je ne comprend pas vraiment le code proposé (je suis pas trtés fort) mais on dirrai que le code proposé, cherche les cellules qui on pour valeur "2" et les remplce par "5"

Je suis pas certain que sa corresponde vraiment à se que je cherche
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 16h43   #4
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Oui c'est ca tu remplca 2 par ton mot et tu lit la suite de mon poste pour ne pas remplacer par un 5

Code :
1
2
3
4
5
6
7
8
9
10
With Worksheets(1).Range("a1:a500") 'ici tu met ton oglet et la plage dans laquelle tu fait la recherche
    Set c = .Find('ton mot", lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c= replace(c, "ton mot", "")
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 17h28   #5
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
Je pense avoir trouvé une solution avec le code suivant :
Code :
1
2
3
4
5
6
7
8
Sub Test()
Dim i As Long
 Application.ScreenUpdating = False
 For i = 1 To Range("b65535").End(xlUp).Row
 Cells(i, 2) = Replace(Cells(i, 2), "PRESSE ", "")
 Cells(i, 2) = Replace(Cells(i, 2), "presse ", "")
 Next i
End Sub
Sa a l'air de marcher mais je voudrais avoir votre avis si c'est bien une solution qui ne devrai pas me poser de probléme
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 19h24   #6
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
C devrais fonctinner mais disont que ca sera bien plus lent a toi de voir. Par contre j'aimerais bien savoir ce que tu reproche au code précédent...
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 22h48   #7
Membre Expert
 
Avatar de laetitia
 
Inscription : décembre 2002
Messages : 1 281
Détails du profil
Informations personnelles :
Âge : 21

Informations forums :
Inscription : décembre 2002
Messages : 1 281
Points : 1 363
Points : 1 363
bonsoir FCL31 l'ami krovax le forum une autre methode en utilisant LIKE

Code :
1
2
3
4
5
6
7
8
9
Option Explicit
Option Compare Text
Sub es()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To Range("b65535").End(xlUp).Row
If Cells(i, 2) Like "*Presse*" Then Cells(i, 2) = Replace(Cells(i, 2), "Presse", "")
Next i
End Sub
__________________
SALUTATIONS
laetitia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 08h06   #8
Inactif
 
Inscription : juin 2007
Messages : 2 055
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 2 055
Points : 2 023
Points : 2 023
Bonjour tou(te)s,
FCL31 : avec ta solution tu risque de ne pas pouvoir tout supprimer, par exemple si le mot se trouve en fin de texte ou avec "Presse" etc..
Le code de Laetitia est le plus performant, et si le double espace qui en résulte est génant tu peu ajouter..
Code :
1
2
3
4
5
6
7
8
9
10
11
Sub es()
Dim i As Long
    Application.ScreenUpdating = False
    For i = 1 To Range("b65535").End(xlUp).Row
        If Cells(i, 2) Like "*Presse*" Then
            Cells(i, 2) = Replace(Cells(i, 2), "Presse", "")
            Cells(i, 2) = Replace(Cells(i, 2), "  ", " ")
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
A+
LeForestier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 09h27   #9
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
Citation:
Envoyé par Krovax Voir le message
C devrais fonctinner mais disont que ca sera bien plus lent a toi de voir. Par contre j'aimerais bien savoir ce que tu reproche au code précédent...
En fait c'est suite à un code qu'on ma donné suite à un post que j'ai mis pour modifier un caractére dans une cellule

Citation:
Envoyé par LeForestier
Code :
1
2
3
4
5
6
7
8
9
10
11
Sub es()
Dim i As Long
    Application.ScreenUpdating = False
    For i = 1 To Range("b65535").End(xlUp).Row
        If Cells(i, 2) Like "*Presse*" Then
            Cells(i, 2) = Replace(Cells(i, 2), "Presse", "")
            Cells(i, 2) = Replace(Cells(i, 2), "  ", " ")
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
Ce code à l'air de bien marcher

Toutefois, j'ai toujours un petit probléme (je sais je suis penible)

Lors de la saisi je sais pas pourquoi les "abrutis" qui font la saisi ecrivent defois "PRESSE" au lieu de "Presse" donc le code ne supprime pas ce mot qui est en trop
Si vous avaiez une idéee SVP

Dernière modification par AlainTech ; 06/07/2009 à 07h00.
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 09h54   #10
Membre Expert
 
Avatar de aalex_38
 
Inscription : septembre 2007
Messages : 1 570
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 1 570
Points : 1 709
Points : 1 709
Bonjour à tous

Remplace :

Code :
If Cells(i, 2) Like "*Presse*" Then
par

Code :
If UCASE(Cells(i, 2)) Like "*PRESSE*" Then
ou bien

Code :
If LCASE(Cells(i, 2)) Like "*presse*" Then
__________________
aalex_38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h13   #11
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
Désolé mais sa a pas l'air de marcher
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h16   #12
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Fait nous un copier coller du code qui n'a pas l'air de marcher que l'on puisse voir comment tu l'as adapté
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h22   #13
Membre Expert
 
Homme Frédéric
Développeur informatique
Inscription : juin 2009
Messages : 944
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2009
Messages : 944
Points : 1 249
Points : 1 249
Bonjour
il faut utiliser le Ucase dans le test, mais aussi dans le Replace :
Code :
1
2
       If UCASE(Cells(i, 2)) Like "*PRESSE*" Then
            Cells(i, 2) = Replace(Ucase(Cells(i, 2)), "PRESSE", "")
A la limite, on n'a plus besoin du If, le Replace suffit.

Bon courage
--------------
Frédéric
http://www.access-developpement.com

Dernière modification par AlainTech ; 06/07/2009 à 07h02. Motif: Balises [code]
fgiambelluco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h23   #14
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Presse()
Dim i As Long
    Application.ScreenUpdating = False
    For i = 1 To Range("b65535").End(xlUp).Row
If LCase(Cells(i, 2)) Like "*presse*" Then
            Cells(i, 2) = Replace(Cells(i, 2), "presse", "")
            Cells(i, 2) = Replace(Cells(i, 2), "Presse", "")
            Cells(i, 2) = Replace(Cells(i, 2), "PRESSE", "")
            Cells(i, 2) = Replace(Cells(i, 2), "  ", " ")
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
Je crois pas qu'il soit bien adapté mais sa a l'air de marché comme ca

Mais si tu peu me dire comment adapter le code precedement donné
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h27   #15
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Je ne pense pas que tu puisse faire mieu a moins que cela ne gène pas de passer toutes les cellule en majuscule ou minuscule je ne vois pas mieux désolé

En majuscule ça donnerai

Code :
1
2
3
4
5
6
7
8
9
10
11
Sub Presse()
Dim i As Long
    Application.ScreenUpdating = False
    For i = 1 To Range("b65535").End(xlUp).Row
        If LCase(Cells(i, 2)) Like "*presse*" Then
           Cells(i, 2) = Replace(UCASE(Cells(i, 2)), "PRESSE", "")
           Cells(i, 2) = Replace(Cells(i, 2), "  ", " ")
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
Enfin j'ai bien une idée mais elle serait super tordu du coup je vais peut être éviter d'y penser sauf si ta solution ou celle que je viens de te proposer ne suffise pas

Edit :
En fait c'est presque pas tordu
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Presse()
Dim ligne As String
Dim deb As Integer
Dim i As Long
 
    Application.ScreenUpdating = False
    For i = 1 To Range("b65535").End(xlUp).Row
        If LCase(Cells(i, 2)) Like "*presse*" Then
           ligne = Cells(i, 2) 
           deb = InStr(UCase(ligne), "PRESSE")
           Cells(i, 2) = Left(ligne, deb - 1) & Right(ligne, Len(ligne) - deb - 6) '6 est la longueur du mot chercher en fait il faudrait 5 (longueur-1) mais 6 permet de virer un espace
           'il faut peut être rajouter 
           'Cells(i, 2) = Replace(Cells(i, 2), "  ", " ")
      End If
    Next i
    Application.ScreenUpdating = True
End Sub
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h28   #16
Membre Expert
 
Homme Frédéric
Développeur informatique
Inscription : juin 2009
Messages : 944
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2009
Messages : 944
Points : 1 249
Points : 1 249
Par défaut post de 11h22

J'ai posté ça tout à l'heure

Citation:
Envoyé par fgiambelluco Voir le message
Bonjour
il faut utiliser le Ucase dans le test, mais aussi dans le Replace :
Code :
1
2
       If UCASE(Cells(i, 2)) Like "*PRESSE*" Then
            Cells(i, 2) = Replace(Ucase(Cells(i, 2)), "PRESSE", "")
A la limite, on n'a plus besoin du If, le Replace suffit.
Bon courage
--------------
Frédéric
http://www.access-developpement.com

Dernière modification par AlainTech ; 06/07/2009 à 07h04.
fgiambelluco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h37   #17
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
C'est bien c'est cool sa a l'air de marcher mais petit probléme c'est que sa me met les cellules dans lesquelles il y a le mot "presse" en majuscule
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 11h41   #18
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
J'avais pas vu la deuxième page j'ai fait un petit édite de mon poste avec un solution si ca te convient. CA trouve meme PrEssE, ou pREsse, ou n'importe quelle combinaison majuscule minuscule
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 12h09   #19
Membre Expert
 
Homme Frédéric
Développeur informatique
Inscription : juin 2009
Messages : 944
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2009
Messages : 944
Points : 1 249
Points : 1 249
et si on essayait ça :

Code :
1
2
3
4
5
  On Error Resume Next ' car si le find ne trouve rien VBA plante
  Columns("B:B").Select
  Selection.Replace What:="presse", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
--------------
Frédéric
http://www.access-developpement.com

Dernière modification par AlainTech ; 06/07/2009 à 07h05. Motif: Balises [code]
fgiambelluco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 12h28   #20
Débutant
 
Avatar de FCL31
 
Inscription : août 2007
Messages : 658
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : août 2007
Messages : 658
Points : 183
Points : 183
Envoyer un message via MSN à FCL31
Merci fgiambelluco on dirrai que sa marche bien (mis a par que sa laisse un espace en debut qui "presse" est ecrit au debut de la cellule mais c'est pas grave car j'ai un code qui me permet de supprimer les espaces en debut et fin de cellules

Merci quand même a Krovax qui c'est bien creusé la tête. Pour revenir sur ton dernier code, il a l'air de bien marcher si le mot est ecrit en debut de cellule et pas ailleur c'est pourquoi j'ai préférais celui de fgiambelluco mais si tu arrive a le modifier pour que sa marche même avec le mot ecrit n'importe où dans la cellules fait le savoir

PS je vous donne le code qui permet de supprimer les espace en fin et début de cellules si sa peu interecer :
Code :
1
2
3
4
5
6
Sub espace()
Dim i As Long 
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
    Cells(i, 2) = Trim(Cells(i, 2))
Next 
End Sub
RE PS pour fgiambelluco : utilise les balise [CODE] STP c'est plus lisible Merci



Si j'ai un probléme je revien vous voir


FCL31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 10h47.


 
 
 
 
Partenaires

Hébergement Web