|
Publicité | |||||||||||||||||||||||
|
|
#1 |
|
Débutant(e)
|
![]() 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 |
|
|
|
|
|
#2 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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", "") E |
|
|
|
|
|
#3 |
|
Débutant(e)
|
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 |
|
|
|
|
|
#4 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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 |
|
|
|
|
|
#5 |
|
Débutant(e)
|
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 |
|
|
|
|
|
#6 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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...
|
|
|
|
|
|
#7 |
|
Membre Expert
![]() Date d'inscription: décembre 2002
Localisation: 38
Âge: 20
Messages: 1 163
|
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
|
|
|
|
|
|
#8 |
|
Inactif(ve)
![]() Date d'inscription: juin 2007
Localisation: Belqique
Messages: 2 074
|
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 |
|
|
|
|
|
#9 | ||
|
Débutant(e)
|
Citation:
Citation:
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. |
||
|
|
|
|
|
#10 |
|
Membre Expert
![]() Date d'inscription: septembre 2007
Messages: 1 455
|
Bonjour à tous
Remplace : Code :
If Cells(i, 2) Like "*Presse*" Then Code :
If UCASE(Cells(i, 2)) Like "*PRESSE*" Then Code :
If LCASE(Cells(i, 2)) Like "*presse*" Then
__________________
|
|
|
|
|
|
#11 |
|
Débutant(e)
|
Désolé mais sa a pas l'air de marcher
|
|
|
|
|
|
#12 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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é
|
|
|
|
|
|
#13 |
|
Membre émérite
![]() |
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", "") Bon courage -------------- Frédéric http://www.access-developpement.com Dernière modification par AlainTech ; 06/07/2009 à 07h02. Motif: Balises [code] |
|
|
|
|
|
#14 |
|
Débutant(e)
|
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 Mais si tu peu me dire comment adapter le code precedement donné |
|
|
|
|
|
#15 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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 sauf si ta solution ou celle que je viens de te proposer ne suffise pasEdit : 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 |
|
|
|
|
|
#16 | |
|
Membre émérite
![]() |
J'ai posté ça tout à l'heure
Citation:
-------------- Frédéric http://www.access-developpement.com Dernière modification par AlainTech ; 06/07/2009 à 07h04. |
|
|
|
|
|
|
#17 |
|
Débutant(e)
|
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
|
|
|
|
|
|
#18 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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
|
|
|
|
|
|
#19 |
|
Membre émérite
![]() |
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] |
|
|
|
|
|
#20 |
|
Débutant(e)
|
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 Si j'ai un probléme je revien vous voir
|
|
|
|
|
|
![]() |
||
[XL-2003] Supprimer un mot dans une cellule
|
||
| Outils de la discussion | |
|
|