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 :

[VBA][Excel]Supprimer une partie du texte d'une grosse liste


Sujet :

Macros et VBA Excel

  1. #1
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut [VBA][Excel]Supprimer une partie du texte d'une grosse liste
    Bonjour,

    J'ai une immense liste de photos sauvegardées dans un fichier Excel. Les
    photos sont listées avec leur chemin d'accès complet sur un lecteur réseau,
    comme par exemple:

    P:\Photo Class,e\Z\Ziziphus\Zizyphus obtusifolia var.
    canescens_I_05ABG01_02.JPG
    Je dois compléter le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    lastrow = .Range("A65536").End(xlUp).Row
     
    For I = 1 To lastrow
     ' Si la cellule courante contient le texte "P:\" pour commencer alors
    '  Supprimer le texte jusqu'au dernier \ mais conserver le reste du texte
    Next
    ...et cela, afin de supprimer le chemin d'accès et conserver uniquement le
    nom de fichier pour chaque photo. Comme je ne suis pas très ferrée en
    manipulation de chaînes de caractères dans VBA, je suis bloquée dans ma boucle For.

    Quelqu'un pourrait-il me donner un coup de main SVP? Merci à l'avance,

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Les fonctions Mid(), Left() ou Right() pour extraire des morceaux d'une chaine, et la fonction InstrRev() qui renvoie la position d'un caractère dans une chaine, en partant de la fin.

  3. #3
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut
    Citation Envoyé par pc75
    Bonjour,

    Les fonctions Mid(), Left() ou Right() pour extraire des morceaux d'une chaine, et la fonction InstrRev() qui renvoie la position d'un caractère dans une chaine, en partant de la fin.
    Merci. Au risque de passer pour une idiote, c'est lundi matin dans mon coin de pays et j'aurais peut-être besoin de quelques détails pour ma culture personnelle (et pour m'aider dans mon travail). Merci!

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    la fonction InstrRev renvoie la position dans la chaine d'un caractère en commencant cette recherche par la fin. Dans ton cas "\".

    Mid Tronque une chaine à partir de la position donné.
    Donc pour toi par exemple


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B1").Value = Mid(Range("A1").Value, InStrRev(Range("A1").Value, "\") + 1)

  5. #5
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut
    Je suis sûre qu'il me manque à peine un détail ??
    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 TrimPath()
    lastrow = .Range("A65536").End(xlUp).Row
    For I = 1 To lastrow
        Range("A" & I).Select
     
     
        Dim result As Boolean
        result = Range("A" & I).Value Like "P:\*"
        If result Then
         ' C'est ici que je dois me prévaloir des avantages de
         ' Mid(), Left() ou Right() ??
        End If
     
     
    Next
    End Sub

  6. #6
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut
    Citation Envoyé par bidou
    la fonction InstrRev renvoie la position dans la chaine d'un caractère en commencant cette recherche par la fin. Dans ton cas "\".

    Mid Tronque une chaine à partir de la position donné.
    Donc pour toi par exemple


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B1").Value = Mid(Range("A1").Value, InStrRev(Range("A1").Value, "\") + 1)
    Merci, bidou. Je vais l'essayer de ce pas.

  7. #7
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut
    Fantastique!

    Code final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    lastrow = Range("A65536").End(xlUp).Row
    For I = 1 To lastrow
        Range("A" & I).Select
     
        Dim result As Boolean
        result = Range("A" & I).Value Like "P:\*"
        If result Then
        Range("E" & I).Value = Mid(Range("A" & I).Value, InStrRev(Range("A" & I).Value, "\") + 1)
     
        End If
    Next
    Ça fonctionne nickel.

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

Discussions similaires

  1. [IE 6] bloc de texte ou une partie de texte invisible après le chargement de la page.
    Par radimby dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 01/06/2007, 16h28
  2. Réponses: 8
    Dernier message: 04/05/2007, 11h41
  3. [VBA-W][VBA-E]Remplacer ou écrire 1 texte dans une zone de texte
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/04/2007, 10h31
  4. Réponses: 5
    Dernier message: 02/01/2007, 15h19
  5. [VBA-E] Mettre en gras une partie du texte d'une cellule
    Par clochardevobsy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/05/2006, 16h25

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