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 :

Recherche d'une chaine de caractère compliquée dans une cellule [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de Roiser
    Homme Profil pro
    Etudiant - MIAGE
    Inscrit en
    Juillet 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Etudiant - MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 29
    Par défaut Recherche d'une chaine de caractère compliquée dans une cellule
    Bonjour,

    Je bloque depuis ce matin sur un petit problème qui me semblait tout simple...

    Contexte :

    J'ai une cellule de mon excel qui référence plusieurs erreurs (sous forme de string), la procédure que je veux appliquer est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Ligne.Cells(16) = Replace(Ligne.Cells(16), " photo " & NomPhoto & " introuvable", "")
    Problème :

    - Je ne connait pas le nom de la photo et celui-ci ne suit pas une logique : je peux avoir 55 comme SAM_55 ou DSCF055 , ...

    - la cellule peux contenir les chaine suivante "ref photo" ou "materiel introuvable" ce qui ne m'empeche d'utiliser la fonction Mid() dans l'exemple suivant :
    "ref photo : 65, SAM_30 photo 65 introuvable materiel introuvable"

    Début de solution :

    Je pense régler le problème si je mets un séparateur, une virgule par exemple, entre chaque erreur (afin de faire un Split) mais j'aimerai une autre solution car le nombre de modifications serai trop importantes

    Merci d'avance pour vos réponse !

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    si la chaine de caracteres n'a pas une partie de sa structure identique pour chaque lignes comment veux tu que excel devine ?

    donne quelques exemplesde lignes on verra apres
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    comme le souligne Patrick, il faut nécessairement des bases fixes pour solutionner ton problème.

    Avec un seul exemple, pas évident.
    En m'inspirant uniquement de celui-ci, il n'y a pas 36 solutions :

    - split du contenu sur l'espace
    - recherche du mot "photo" et recherche du mot "introuvable" : s'ils sont séparés de deux indices dans ton tableau splité .... alors le nom de ta photo est dans l'indice situé entre les deux (puisque le nom de ta photo ne contient pas d'espace)

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    if InStr(DebutDeRecherche,LaLigneDeTexte,LeTexteRecherche) > 0 then Le texte a été trouvé
    tu peu te garantir avec un "and" et rechercher "photo"

    à partir de là, tu supprimes la partie "photo...." avec "split"

    TabElement=Split(Ucase(LaLigneDeTexte),"PHOTO")
    La partie à garder = TabElement(0)
    La partie à ne pas utiliser = TabElement(1)

    La Cellule = TabElement(0) ' La partie à garder

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    dans l'exemple suivant : "ref photo : 65, SAM_30 photo 65 introuvable materiel introuvable"
    recherche "introuvable" qui est l'élément déclencheur..

    recherche "ref photo :" --> InStr --> si >0 --> Split(Ucase(exemple suivant),"REF PHOTO :") --> garder TabElement(1) ... qui est après "REF PHOTO :"

    recherche "photo" --> InStr(Ucase(TabElement(1)),"PHOTO") --> si >0 --> Split(Ucase(TabElement(1)),"PHOTO") --> garder TabElement(0) ... qui est avant "PHOTO"

    ne pas oublier "Trim" qui supprime les espaces avant et après

    La cellule = Trim(TabElement(0))

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    comme indique joe le plus probant est le split par les espaces

    et test des portion si like lettrte et like numeric

    exemple

    sur 3 cellules
    en A1 ref photo : 65,SAM_30 photo 65 introuvable materiel introuvable

    en A2 introuvable : 88,dscu35ljf78 photo 88 introuvable materiel introuvable

    en A3 materiel introuvable : 34,afg54l456p photo 34 introuvable materiel introuvable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
         MsgBox nom_photo([A2])
    End Sub
     
    Function nom_photo(cel)
        tabl = Split(cel.Value, Chr(32))
            For i = 0 To UBound(tabl)
                If UCase(tabl(i)) Like "*[A-Z]*" And tabl(i) Like "*[0-9]*" Then nom_photo = tabl(i) 'nom_photo = tabl(i)
        Next
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    en supposant ton nom de photo toujours présent après les ":" comme sur l'exemple (peut-être très mauvais...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim texte As String, pos As Long, a
        texte = [A2]
        pos = InStr(texte, ":")
        If pos > 1 Then texte = Application.Trim(Replace(texte, "photo " & Application.Trim(Split(Mid(texte, pos + 1), ",")(0)) & " introuvable", ""))
    eric

  8. #8
    Membre averti Avatar de Roiser
    Homme Profil pro
    Etudiant - MIAGE
    Inscrit en
    Juillet 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Etudiant - MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 29
    Par défaut
    Bonjour,

    Merci a tous de vos nombreuses réponses (désolé de ne pas les avoir vues avant ...)

    J'ai pu grâce a vos script et remarques constitué un début de réponse qui à l'air prometteur. J'essairai de penser directement à mettre des "," entre chaque chaine de caractère à l'avenir pour ne pas effectué une recherche aussi laborieuse ...

    J'espère un jour vous renvoyer la pareille !

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 18/06/2010, 10h49
  2. Caractère espace dans une chaine de caractère
    Par 8itit dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 20/04/2010, 14h09
  3. Suppression espace et caractère spéciaux dans une chaine de caractère
    Par arnaud036 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 12/10/2007, 10h51
  4. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  5. Modifier une chaine de caractères lue dans une DB
    Par shinryu69 dans le forum Langage
    Réponses: 4
    Dernier message: 31/10/2006, 13h40

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