IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Supprimer un mot dans une cellule [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    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

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    c= replace(c, "ton mot", "")
    Pour la déclaration des variable c est un range

    E

  3. #3
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    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

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Je pense avoir trouvé une solution avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    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...

  7. #7
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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+

  9. #9
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour à tous

    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, 2) Like "*Presse*" Then
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If UCASE(Cells(i, 2)) Like "*PRESSE*" Then
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If LCASE(Cells(i, 2)) Like "*presse*" Then

  11. #11
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Désolé mais sa a pas l'air de marcher

  12. #12
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    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é

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    il faut utiliser le Ucase dans le test, mais aussi dans le Replace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  14. #14
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

  15. #15
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  16. #16
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  17. #17
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    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

  18. #18
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    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

  19. #19
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    et si on essayait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  20. #20
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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



+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Supprimer un mot dans une cellule sur plusieurs onglet
    Par mia64 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/06/2015, 15h47
  2. [vba excel] chercher un mot dans une cellule
    Par MrYoYo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/02/2009, 17h38
  3. [RegEx] supprimer des mots dans une phrase
    Par anarchoi dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2007, 09h44
  4. comment en VBA mettre les mots dans une cellule en oblique
    Par antoine.dandois dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/02/2007, 17h10
  5. [TSQL] calculer le nombre de mot dans une cellule
    Par ricachu dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 31/07/2006, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo