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 :

Suppression d'une partie du contenu d'une cellule [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut Suppression d'une partie du contenu d'une cellule
    Bonjour a tous

    j'ai un excel qui contient dans ses cellules des lignes importees d'un fichier InfoPath, mais ce n'est pas tres important, mon probleme etant le suivant:

    Je souhaite supprimer tout ce qui se trouve a droite et a gauche de la donnee que je vais garder au final

    Je m'explique. Si j'ai <my:Project_Number>650062</my:Project_Number> dans ma cellule A1

    Comment faire pour tout supprimer a partir des >< pour ne garder que 650062 ?
    Je souhaite vraiment utiliser les >< comme point de depart car ca me permettrais alors de realiser l'operation sur toutes mes cellules.

    Je precice que je souhaite realizer une macro qui recherche au prealable la cellule contenant telle ou telle contenu, la transfere dans une autre cellule puis effectue le traitement en supprimant le contenu inutle. Je repete ensuite cette suite d'operation pour toutes les cellules interessantes

    D'avance merci

    Lucas

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour lulu_MAHC,

    Une piste à explorer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function Extract(ByVal s As String) As String
        Dim t$(), s1$
            t = Split(s, "</"):   s1 = t(0)
            t = Split(s1, ">"):   Extract = t(1)
    End Function
     
    Sub test()
        MsgBox Extract("<my:Project_Number>650062</my:Project_Number>")
    End Sub

  3. #3
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut
    Je vous remercie.

    J'ai un peu adapte votre proposition a mon probleme et je pense que ca va marcher ...
    J'obtient donc le code suivant :

    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
     
    Function Extract(ByVal s As String) As String
        Dim t$(), s1$
            t = Split(s, "</"):   s1 = t(0)
            t = Split(s1, ">"):   Extract = t(1)
    End Function
     
    Sub test()
     
        Cells.Find(What:=":project_number", After:=ActiveCell, LookIn:=xlFormulas _
            , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        ActiveCell.Select
        ActiveCell.Copy
        ActiveCell.Offset(3, 11).Range("A1").Select
        ActiveCell.PasteSpecial
     
        Extract ("Active.Cell")
     
    End Sub
    En decomposant tout avec le F8 ( oui je suis un grand debutant ahah) tout fonctionne bien mais a la derniere ligne de la function ca plante et j'obtient ce message d'erreur:
    Nom : erreur.PNG
Affichages : 698
Taille : 38,0 Ko

    J'ai cherche et c'est un problem de dimesions apparement ... mais je ne comprend pas ce que ca veut dire

  4. #4
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut
    J'ai rebidouiller dessus hier toute l'aprem et après plusieurs essaye dans un sens et plusieurs dans l'autre je m apercois qu'en fait ce serait plutot un probleme de declaration de variable... comme si la fonction extract ne pouvait fontionner qu'avec du texte et pas avec le contenu de ma cellule et meme en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Extract ("ActiveCell.Value")
    Si vous avez un conseil ...

  5. #5
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour lulu_MAHC,

    Non ce n'est pas un problème de variable. Extract est une fonction qui a pour résultat une chaine de caractères. il faut donc faire quelque chose de ce résultat car Extract ("ActiveCell.Value") n'a pas vraiment de sens (de plus la tu traite Exctract avec la chaine "ActiveCell.Value")

    Msgbox Extract(ActiveCell.Value) serait déjà plus correct.



    Je ne sais pas ce que tu veux faire exactement, tu cherches une cellule sui contient :project_number, ok. Mais que veux tu en faire ? un remplacement dans la même cellule ou dans une autre ?


    Voila un exemple pour faire un remplacement dans la même cellule de la première valeur trouvé après la cellule active :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim rg As Range
            Set rg = Cells.Find(What:=":project_number", LookAt:=xlPart)
            rg = Extract(rg)
    fin:
        Set rg = Nothing
    End Sub
    La fonction Extract n'a pas changé.

  6. #6
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut
    Bonjour Antony,

    Oui c'est exactement ce que je voulais faire merci beaucoup. En fait mon but c'est de chercher les donnes qui m'interessent en passant par le find et par le contenu des balises . Chaque donne peut etre retrouvee grace a ca ; dans notre cas c'etait en fait le :project_number qui permettait de localiser la bonne cellule. Mon but final est d'en fait trouver la cellule interessante, de supprime le contenue inutile (tout ce qu'il y a de part et d'autre des /< > ) et d ensuite envoyer la donnee vers l'adresse de la table correspondante dans une Base de donnee Access ( qui a deja ete creee)

    Je poursuis donc mon aventure et te remercie bcp , je pense que j'ai pas finis de galerer mais c'est en forgeant qu'on devient forgeron

    Bonne journee a toi

  7. #7
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Parfait si c'est ce que tu voulais,

    Le remplacement se fait dans ton classeur Excel avant l'intégration dans Access ?
    Sur toutes les cellules répondants a ton critère de recherche ?

  8. #8
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut
    oui c'est ca , en fait je transforme toute les donnes qui m'interesses, et j obtient alors le meme classeur excel mais plus propre. Et je ne sais pas encore si c'est possible mais je pense que oui, l'idee serait qu'apres chaque traitement de donnee, exemple ici, après avoir recupere notre numero de projet 60052, je code un truc qui fasse : j'envoi le contenu de celle cellule vers l'adresse de la table qui correspond aux numero de projet .

    En fait mon boulot c'est de completer une base de donnee qui a deja ete creee au prealable . Je dois la completer avec des milliers de fichiers info path (le truc pas marrant c'est qu'ils ne sont pas identique... c'est pour ca que je me serre des balises pour localiser les donnes). Du coup l astuce c'est de tous les passer en TXT , d'ensuite les ouvrirs sur Excel pour pouvoir coder et d'envoyer ca a la DB.

    Le but final c'est un programme qui fait tous ca automatiquement, de la conversion en TXT en passant par l'ouverture en Excel jusqu'a l envoi de chaque info a la DB. Le tout en le faisant boucler sur tout les fichiers InfoPath que contient mon repertoire . Le chemin est encore long

  9. #9
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Pour boucler sur toutes les cellules et faire le remplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
        Application.ScreenUpdating = False
        Dim rg As Range
            Set rg = Cells.Find(What:=":project_number", LookAt:=xlPart)
            While Not rg Is Nothing
                rg = Extract(rg)
                Set rg = Cells.Find(What:=":project_number", LookAt:=xlPart)
            Wend
    fin:
        Application.ScreenUpdating = True
        Set rg = Nothing
    End Sub

  10. #10
    Membre averti Avatar de lulu_MAHC
    Homme Profil pro
    Stagiaire
    Inscrit en
    Février 2016
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 53
    Par défaut
    Merci bien ! Bonne continuation !

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

Discussions similaires

  1. Suppression d'une partie du contenu d'une colonne
    Par tvd_marc.white dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/09/2011, 14h11
  2. [8i] Exporter une partie du contenu d'une table
    Par nicdo77 dans le forum Oracle
    Réponses: 1
    Dernier message: 12/12/2007, 14h59
  3. [VBA-E] Affecter une partie du contenu d'une cellule à une autre.
    Par CAFOUIN dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2007, 10h03
  4. Excel : mettre une partie du contenu d'une cellule en gras
    Par cladsam dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/08/2006, 10h05
  5. [VBA-E] Inscrire dans le textbox une partie du contenu d'une cellule
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2006, 08h06

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