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 :

Supression Personalisée dans une cellule [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 187
    Par défaut Supression Personalisée dans une cellule
    salut a tous
    je voulez remplacer le contenue d'une cellule en suppriment les caractères quis suivent le mot: 'text2'
    L'original:
    Nom : 01.PNG
Affichages : 139
Taille : 6,7 Ko
    Le resultat voulu:
    Nom : 02.PNG
Affichages : 132
Taille : 5,3 Ko
    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénierie de Maintenance
    Inscrit en
    Août 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénierie de Maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 29
    Par défaut Supression Personalisée dans une cellule
    Bonjour !

    résultat en C

    Nom : Capture.JPG
Affichages : 105
Taille : 11,2 Ko

    formule en B1 : =CHERCHE("text2";A1;1)+4

    +4 : longueur de "text2"-1 , 5-1

    formule en C1 : =GAUCHE(A1;B1)

    C1 le résultat

    Ajuster le +4 suivant la longueur du mot "text2" s'il fait 10 caractères mettre +9

    AMHA

  3. #3
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 288
    Par défaut
    Salut
    La formule directe serait plus tôt : =GAUCHE(A1;TROUVE("text2";A1)+4).
    Mais, il y a des sauts de ligne Chr(10), donc il faut Split() la chaine de caractères.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 437
    Par défaut
    Bonjour,

    Pour faire cela en conservant les sauts de lignes à l'intérieur de la cellule, il me semble nécessaire de passer par une fonction personnalisée. Une solution de ce genre:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Option Explicit
     
    Public Function Nett(sCell As String, sTxt As String) As String
        '--- nettoie le texte qui se trouve après sTxt sur la même ligne
        Dim kTxt As Long, kLf As Long, s As String, n As Long
        n = Len(sTxt)
        s = Replace(sCell, vbLf, "|") & "|"
        kLf = 1
        Do
            kTxt = InStr(kLf, s, sTxt)
            kLf = InStr(kTxt + n, s, "|")
            If kTxt + n < kLf Then
                s = Left(s, kTxt + n - 1) & Mid(s, kLf)
                Debug.Print s
            End If
            kTxt = kLf + 1
        Loop Until kLf >= Len(s)
        s = Left(s, Len(s) - 1)
        s = Replace(s, "|", Chr(10))
        Nett = s
    End Function
     
    Sub Nettoyer()
        Dim k As Long
        For k = 1 To Range("A" & Rows.Count).End(xlUp).Row
            Range("B" & k) = Nett(Range("A" & k), "text2")
        Next k
    End Sub
    Cependant une bizarrerie: utiliser directement la fonction ne respecte pas toujours les sauts de ligne, mais respecte toujours ces sauts quand on l'utilise via la Sub.

    Cordialement.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre très actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 187
    Par défaut
    merci pour vos réponses
    je test et je revient dans un instant

  6. #6
    Membre très actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2014
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2014
    Messages : 187
    Par défaut
    salut
    thekat et hyperion13: vos propositions marche bien mais seulement si la cellule contient une Line unique
    mais la proposition de EricDgn marche parfaitement comme je le veut
    il reste seulement quelque modification: "quand il ne trouve pas le mot a supprimer il se bloque" ... mais c'est pas grave;
    Merci a tous et bonne soirée .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. focus dans une cellule d'une JTable
    Par coil dans le forum Composants
    Réponses: 5
    Dernier message: 07/07/2010, 17h15
  2. Supression de caractères dans une cellule
    Par Damss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/03/2009, 16h36
  3. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 10h26
  4. Réponses: 3
    Dernier message: 01/12/2003, 13h14
  5. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 10h18

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