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(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
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
Vieux 30/06/2009, 16h05   #2
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
Vieux 30/06/2009, 16h27   #3
Débutant(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
Envoyer un message via MSN à FCL31
Par défaut

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
Vieux 30/06/2009, 16h43   #4
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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 :
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
Vieux 30/06/2009, 17h28   #5
Débutant(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
Envoyer un message via MSN à FCL31
Par défaut

Je pense avoir trouvé une solution avec le code suivant :
Code :
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
Vieux 30/06/2009, 19h24   #6
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
Vieux 30/06/2009, 22h48   #7
Membre Expert
 
Avatar de laetitia
 
Date d'inscription: décembre 2002
Localisation: 38
Âge: 20
Messages: 1 163
Par défaut

bonsoir FCL31 l'ami krovax le forum une autre methode en utilisant LIKE

Code :
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
Vieux 01/07/2009, 08h06   #8
Inactif(ve)
 
Date d'inscription: juin 2007
Localisation: Belqique
Messages: 2 074
Par défaut

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 :
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
Vieux 01/07/2009, 09h27   #9
Débutant(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
Envoyer un message via MSN à FCL31
Par défaut

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 :
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
Vieux 01/07/2009, 09h54   #10
Membre Expert
 
Avatar de aalex_38
 
Date d'inscription: septembre 2007
Messages: 1 455
Par défaut

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
Vieux 01/07/2009, 11h13   #11
Débutant(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
Envoyer un message via MSN à FCL31
Par défaut

Désolé mais sa a pas l'air de marcher
FCL31 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 01/07/2009, 11h16   #12
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
Vieux 01/07/2009, 11h22   #13
Membre émérite
 
Date d'inscription: juin 2009
Localisation: Lorraine
Messages: 842
Envoyer un message via MSN à fgiambelluco
Par défaut

Bonjour
il faut utiliser le Ucase dans le test, mais aussi dans le Replace :
Code :
       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
Vieux 01/07/2009, 11h23   #14
Débutant(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
Envoyer un message via MSN à FCL31
Par défaut

Code :
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
Vieux 01/07/2009, 11h27   #15
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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 :
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 :
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
Vieux 01/07/2009, 11h28   #16
Membre émérite
 
Date d'inscription: juin 2009
Localisation: Lorraine
Messages: 842
Envoyer un message via MSN à fgiambelluco
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 :
       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
Vieux 01/07/2009, 11h37   #17
Débutant(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
Envoyer un message via MSN à FCL31
Par défaut

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
Vieux 01/07/2009, 11h41   #18
Expert Confirmé
 
Avatar de Krovax
 
Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
Par défaut

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
Vieux 01/07/2009, 12h09   #19
Membre émérite
 
Date d'inscription: juin 2009
Localisation: Lorraine
Messages: 842
Envoyer un message via MSN à fgiambelluco
Par défaut

et si on essayait ça :

Code :
  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
Vieux 01/07/2009, 12h28   #20
Débutant(e)
 
Avatar de FCL31
 
Date d'inscription: août 2007
Localisation: Grenade (31)
Âge: 29
Messages: 563
Envoyer un message via MSN à FCL31
Par défaut

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 :
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
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 05h16.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.