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

VBA Access Discussion :

couper une partie de la phrase dans les enregistrements


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut couper une partie de la phrase dans les enregistrements
    Bonjour à tous
    Je voudrais dans une colonne supprimer une partie d'un texte en gardant l'autre.
    Exemple: dans l'enregistrement 1 C:\PHOTO\VASE1
    2 C:\PHOTO\VASE2
    3 C:\PHOTO\VASE3
    je veux supprimer C:\photo\ pour ne laisser que
    1 VASE1
    2 VASE2
    3 VASE3
    ça ne marche pas avec la fonction rechercher et remplacer de Excel

    Merci d'avance
    BOB

  2. #2
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Pour obtenir ce genre de chose il faut faire des opérations sur chaines de caractères (string). Pour un chaine telle que celle-ci "C:\PHOTO\VASE1"
    ce code devrait aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function RecupereNom(Chaine As String)
        Dim iterator As Integer
     
        iterator = InStr(Chaine, "\")
        While InStr(iterator + 1, Chaine, "\") > 0
          iterator = InStr(iterator + 1, Chaine, "\")
        Wend
        RecupereNom = Right(Chaine, Len(Chaine) - iterator)
    End Function
    Elle s'utilise comme ceci dans la fenetre d'éxécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?RecupereNom("C:\PHOTO\VASE1")
    elle retourne :
    et elle s'utilise comme ceci dans du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim resultat as String
    Resultat = RecupereNom("C:\PHOTO\VASE1")
    et Resultat vaut :
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    J'ajoute que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update matable set monNom=recuperenom(monNom)
    marche aussi
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Bonjour les amis
    Je vous remercie pour vos réponses, mais je ne sais pas trop qu'en faireniet où et comment les entrer dans ma base.
    Vous avez remarqué que je ne suis pas expert en la matière.
    Merci pour votre gentillesse
    A + Bob

  5. #5
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Salut bob,

    et bien le code que j'ai posté plus haut il faut l'écrire dans un module, pour cela il faut ouvrir le Visual Basic Editor (VBE). Une fois ouvert en haut sur la droite tu peux voir un projet c'est celui de ton fichier qui est ouvert (il y en a un par fichier). tu fait un clic droit dessus puis ajouter module (de mémoire ca doit être inserer-> module).

    Tu copie et tu colle le code dans ce nouveau module que tu pourra executer a partir de là.

    Pour executer ce code après tu n'a que l'embaras du choix, mettre un bouton, l'ajouter a du code existant pour traiter des chaines de caractères, ou le mettre dans une requete comme nous l'a dis notre amis nico.

    Expliques-nous un peu plus ton problème si tu souhaites que l'on te guide vers une solution appropriée.

    @++
    loi de LeBlanc : Plus tard signifie jamais. extrait de Coder proprement Auteur:Robert C. Martin

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Comme te l'indiquent Tonioyo et Nico,

    Après avoir mis le code de la fonction RecupereNom dans un module tu
    tu peux créer la requête avec le sql qui t'as été donné:

    Dans requêtes, faire:
    nouveau -> mode création -> Affichage: mode SQL

    Puis copier le sql:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    update matable set monNom=recuperenom(monNom)

    puis enregistrer, ensuite fermer
    et enfin double-cliquer sur la requête crée pour l'exécuter.

    Ou tu peux exécuter la requête proposée avec un RunSQL, sur l'évènement clic d'un bouton de commande (ici Commande1):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande1_Click()
    DoCmd.RunSQL ("update matable set monNom=recuperenom(monNom)")
    End Sub
    (matable et monnom sont bien sûr à adapter à ton cas )

    Enfin, pour éclairer la problématique, je crois que cette discussion est à rapprocher de ce fil

    Bonne continuation...
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Bonjour,

    En seule ligne sans fonction vba personnelle !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replace(Monchamp,mid(Monchamp,1,instrrev(Monchamp,"\")),"")
    Toujours à mettre dans une requète mais ne pas oublier de remplacer les , par des ;

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Merci loufab, tonioyo et user
    Je vois que j'ai fait bougé du monde, ce forum est extraordinaire.
    Comme l'a remarqué user la discution est la suite du fil indiqué, mais le problème est de supprimer une partie d'un enregistrement pour ne pas le faire manuellemnet.
    Mon exemple en réalité c'est que dans une colonne de 15000 enregistrements j'ai ceci:
    c:\physio\photo2\client1 jusqu'au 15000 ème

    et je veux supprimer C:\physio\photo2\
    pour ne garder que CLIENT1
    Tout ceci parce que sur le fil précédent nos amis du forum m'ont aider à trouver une solution de mise en réseau qui demande ce résultat.
    L'autre problème c'est que les codes que vous me donner doivent être excellents, mais moi je ne fais pas dans l'excellence et je ne sais pas comment remplacer les termes que vous utiliser par ceux qui me concernent. Je ne comprend rien au langage vb.

    Voilà j'espère que j'ai été assez clair, c'est vrai que c'est pas simple.
    Merci les gars et à plus
    Bob

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    ReSalut,

    C'est vrai que çà fait beaucoup de travail à la main

    J'ai repris les propositions précédentes (Loufab, Nico. et Tonyo.):

    J'ai repris ta table Clients sur l'autre fil et ajouté la requête UpDatePhysio.

    Maintenant il ne te reste plus qu'à ajouter cette requête à ta base...

    La base:
    CLIENTS.zip
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    BRAVISSIMO User
    C'est impeccable, je l'ai testé sur ma base, nickel.
    Je remercie tout le monde pour l"aide que vous m'avez apportée, avec un clin d'oeil por user.
    Je vais essater de me mettre au vba c"est super.
    Cordialement Bob

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/06/2014, 00h47
  2. [XL-2007] couper une partie des données dans une autre colonne
    Par ivan_isaak dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/11/2011, 10h06
  3. Rechercher un mot dans les enregistrements d'une table access
    Par codial dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/11/2006, 21h35
  4. Réponses: 2
    Dernier message: 26/07/2006, 10h03
  5. Réponses: 1
    Dernier message: 15/06/2006, 18h28

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