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 dans une chaine de caractère


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 50
    Points : 34
    Points
    34
    Par défaut Recherche dans une chaine de caractère
    Bonjour,

    je cherche un moyen de rechercher une chaine de caractère définie dans une cellule. Je m'explique avec le contenu de la cellule en question:

    Enrollment for 22AG-Organisation du vendeur Ag Session DEV-22-GA3#RNP#9 - 155746
    J'ai de nombreux documents avec une chaine de ce type, et à chaque fois les seuls choses qui ne changent pas sont "Enrollment for" et "Session".

    Je souhaite pouvoir supprimer automatiquement Enrollment for de chaque chaine, et faire un retour à la ligne juste avant "Session". Il me faut dont un moyen de trouver le mot Session dans ma chaine, et dés qu'il le trouve, faire un retour à la ligne juste avant. J'avais au départ penser à compter le nombre de caractère, mais il s'avère que en fonction du titre, ici par exemple "Organisation du vendeur Ag", la chaine ne fait jamais le même nombre de caractère. C'est donc vers une recherche du mot Session que je m'orienterais, mais sans savoir comment faire.

    Je ne sais pas si je suis très claire, mais merci d'avance pour votre aide

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

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

    Tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Chaine = "Enrollment for 22AG-Organisation du vendeur Ag Session DEV-22-GA3#RNP#9 - 155746"
     
    Chaine = mid(Chaine, 16) ' supprime les 15 premiers caractères
     
    Chaine = Replace(Chaine, "Session", chr(13) & chr(10) & "Session") ' ajoute un crlf avant le mot Session

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    Merci, cela fonctionne parfaitement!.

    Maintenant, si je ne souhaite que concerver que ce qu"il se trouve entre Enrollement for et session, c'est à dire "22AG-Organisation du Vendeur Ag", comment je peut faire?

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

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

    Il faut que tu utilises la fonction Instr() qui te renvoie la position d'une sous-chaine dans une chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Chaine = "Enrollment for 22AG-Organisation du vendeur Ag Session DEV-22-GA3#RNP#9 - 155746"
    Position = Instr(Chaine, "Session")
    Ensuite, tu utilises la fonction Mid() qui permet d'extraire une sous chaine en indiquant les positions de debut et fin de la sous-chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Chaine = "Enrollment for 22AG-Organisation du vendeur Ag Session DEV-22-GA3#RNP#9 - 155746"
    Position = Instr(Chaine, "Session")
    Chaine = Mid(Chaine, 16, Position)
    PS : PAS TESTE, mais c'est l'idée

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    Effectivement, j'ai fini par faire ça tout à l'heure, et ça marche parfaitement.

    Je profite de vous avoir pour vous poser une dernière question, et ensuite je vous laisse tranquille :

    J'ai une date de début en A1, une date de fin en A2, sous le format 00/00/0000.


    Par exemple:
    Date Debut: 20/04/2012
    Date Fin: 24/04/2012

    Je souhaite afficher chaque jour de cet intervalle sur une ligne.
    J'aurais dans cet exemple de C1 à C5

    C1
    20/04/2012


    C2
    2104/2012


    C3
    22/04/2012


    C4
    23/04/2012


    C5
    24/04/2012

    Comme vous avez du le remarquer, je début en Macro excel, et je ne trouve pas comment incrémenter la date dans cet intervalle.

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    si tu as pris la précaution de mettre le format "Date" en C :

    exemple 1ere date en A1, 2eme en B1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub remplirdates()
    Dim x As Long, tb(), y As Long
    y = 0
    For x = Range("A1") To Range("B1")
      y = y + 1
      ReDim Preserve tb(1 To y)
      tb(y) = x
    Next x
    Range("C1:C" & UBound(tb)) = WorksheetFunction.Transpose(tb)
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

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

Discussions similaires

  1. rechercher dans une chaine de caractère, un caractère avec un tant que
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 16/01/2011, 17h02
  2. [E-03] recherche dans une chaine de caractère
    Par lemerite dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2009, 21h44
  3. Recherche dans une chaine un caractère.
    Par drakkar_agfa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2008, 19h32
  4. Recherche dans une chaine de caractères
    Par stepd dans le forum C
    Réponses: 4
    Dernier message: 19/07/2006, 18h55
  5. [VB.NET] Recherche dans une chaine de caractères
    Par Pleymo dans le forum Windows Forms
    Réponses: 12
    Dernier message: 09/04/2005, 10h25

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