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 :

Apres lancement d'une macro, excel " fait des choses tout seul "


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 Apres lancement d'une macro, excel " fait des choses tout seul "
    Salut All ,

    Tout d'abord desole pour le titre un peu fantaisie du sujet mais mon probleme est vraiment etrange

    (Je vous colle le code tout de suite après pour que vous puissiez le voir ) . Apres lancement d une macro , tres simple et qui sert juste a reorganiser mes donnes, sur un premier fichier , excel decide de son propre chef de modifier son comportement ....
    La macro suivante :
    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
     
    Sub mc()
     
     
     For Each c In Worksheets("Sheet1").Range("A1:D3").Cells
     If c.Value <> 0 Then
     
     c.Value = Replace(c.Value, "><m", ".")
     c.Select
     
        Selection.TextToColumns Destination:=c, DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :=".", FieldInfo:=Array(Array(1, 2), Array(2, 1)), TrailingMinusNumbers:=True
     
     
     
      End If
      Next
    End Sub
    Permet de passer de la photo 1 a la photo 2.
    Je precise que pour arriver a la photo 1 je copie/colle (manuellement ou par macro ) simplement le contenu d'un fichier texte vers un nouveau classeur excel.
    Donc pour le premier fichier , excel me donne le resultat desire . Mais lorsque je souhaite effectuer un copier/colle avec le contenu du deuxieme fichier j obtiens la photo 3 alors que je devrais obtenir l'equivalent de la photo 1. C'est comme si excel enregistrait quelque part ce que faisait ma macro et decidait de le reproduire tout seul ( et en plus pas proprement )...
    Si quelqu'un sait pourquoi , ou sait comment resoudre le probleme je lui serait tres reconnaissant ... Je suis debutant en VBA mais je commence a me debrouiller et ce genre de comportement m'est completement inconnu .....
    ( en plus , entre la photo 1 et 3 il s agit du contenu du meme fichier pour bien vous montrer la difference qu excel fait tout seul )

    1 : Nom : Photo1.PNG
Affichages : 470
Taille : 48,2 Ko
    2 : Nom : Photo2.PNG
Affichages : 247
Taille : 32,1 Ko
    3 : Nom : PHOTO3.PNG
Affichages : 211
Taille : 37,0 Ko

  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 heu
    j'avoue que l'on comprends pas bien ta question tout du moins ce qui se passe avant ta macro
    est ce des fichiers XML ?
    si j'ai bien compris tu ouvre tes fichiers xml ,tu copie ,tu ferme,et tu colle dans les cellules

    heu... pourquoi tu fait ca?????
    il y a une palette d'outil excel ou vba pour ce genre de manip en un coup !!!!!
    surtout que c'est assez facile avec des fichiers xml( bien conçus bien entendu!!!)

    un exemple de procédé qui fait ce que tu demande en un coup
    utilise la fonction VBA open for output as freefile
    recupere le texte complet avec EOF
    fait un replace du texte de "</"par rien
    en suit tu fait
    mytab=split(tontexteobtenu,"<")
    et maintenant range(cells(1,1),cells(ubound(mytab),1)=mytab
    tu aura ton fichier xml sans les balises et chaque éléments dans une cellule a condition de ne pas avoir plus d'élément que de colonne dispo dans excel
    et voila en un coup

    pourrait on avoir un exemple de ces fichiers xml tout du moins le code entier dans les balises quote
    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
    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 oui je sais je sais pour les outils, mais en fait cette partie de code fait partie d une grosse macro qu j ai deja realise ( et qui fonctionne impec pour les fichier ayant le bon format ) qui traite effectivement des fichiers xml ... je me sers en fait des balises pour recuperer des donnees etc .. mais la le truc c est qu'il y a quelques fichiers qui ont un mauvais format, donc j ai creee ce petit morceau de code , qui realise exactement ce dont j'ai besoin mais uniquement pour le premier fichier ... Une fois ce premier traitement effectue , excel n'en fait qu'a sa tete ...

  4. #4
    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
    il n'en fait pas qu'a sa tete
    en fait les fichier de mauvais formats on des erreur différentes ils faudrait que tu prenne toutes les possibilités en compte soit pire que de le faire a la main
    donne moi un de ces foutus fichier même un avec des erreurs en me précisant l'erreur qui peut éventuellement provoquer ce petit désagrément
    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

  5. #5
    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
    Le truc c est que justement je traits ces " mauvais fichier " en les rendant exploitbale par ce petit bout de code. Ce qui est bizarre c'est qu elle functionne tres bien sur n importe lequel des fichiers bizarre mais il faut a chaque fois que je ferme excel sinon le copier coller plante... C est comme si il realiser la macro ( sans que je ne lui demande ) mais sans pour autant obtenir ce que je desire ....
    Je te donne ici un un bout du fichier " corrompu" avec son affichage initial dans le notepad++ ( je ne me sert de ce dernier que pour visualizer ) j ai remplacer les donnes ( car ce sont des donnes commerciales ) par des ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution productVersion="11.0.8165" PIVersion="1.0.0.0" href="http://globalvjf/globalpet2003vjfarchive/PE2003VJF/Legacy%20Lux%20PSFs/Forms/GlobalPSFV1A.xsn" name="urn:schemas-microsoft-com:office:infopath:Global-PSF---InfoPath-template:-myXSD-2007-05-25T17-58-20" solutionVersion="1.0.0.1474" ?><?mso-application progid="InfoPath.Document"?><my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:s1="http://AdsiServices.WhoAmIRequest" xmlns:s2="http://AdsiServices.WhoAmIResponse" xmlns:ns1="http://AdsiServices.AdsiServicesPersonRequest" xmlns:ns2="http://AdsiServices.AdsiServicesPersonResponse" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:tns="http://AdsiServices_WS/findADPerson" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:ns3="http://AdsiServices_WS/getMyAccountInfo" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2007-05-25T17:58:20" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us"><my:Project_Number>???</my:Project_Number><my:Main_Number>????</my:Main_Number><my:Project_Type>??????????</my:Project_Type><my:Factory_Location>???</my:Factory_Location><my:Project_Description>???????????????</my:Project_Description><my:PSFTitle>??????????????</my:PSFTitle><my:Revision_Entry_Text>Updated shipping infos</my:Revision_Entry_Text><my:Current_Revision><my:Current_Rev>001</my:Current_Rev><my:Current_Rev_Date>2009-02-04</my:Current_Rev_Date><my:Current_Description>Updated shipping infos</my:Current_Description><my:Current_Modified_by>??????</my:Current_Modified_by><my:ShowHideRevisionHistory>0</my:ShowHideRevisionHistory><my:Current_Project_Number>????</my:Current_Project_Number></my:Current_Revision><my:Revision_Control><my:Revisions><my:Rev>000</my:Rev><my:Description>Original Document</my:Description><my:Modified_by>????????</my:Modified_by>
    je precise que la premiere partie du code m est inutile

    et je dois en fait garderles balises .. car c est grace a ces dernieres que j arrive a localizer et ensuite recuperer les donnes que je souhaite ... Pour ce qui provoque l'erreur ... je ne sais pas du tout ... peut etre un mauvais format.. peut etre une conversion de fichiers mal faites ... aucune idee ..

    Mais pour moi mon probleme actuel viendrait plus d excel , de la macro ou du code que du fichier xml lui meme , car comme je l ai dit , un par un , cela fonctionne tres bien
    ( les fichier mauvais s affichent en fait sur une seule ligne ... et c est pas du tout exploitable pour moi au vu de mes methodes de traitements )

  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
    d'accords et ces quoi le résultat souhaité exactement
    capture d'écran !!!!
    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 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
    Le resultat souhaite c'est ce que j obtient après le 1 er traitement , cad :
    Nom : Bon.PNG
Affichages : 168
Taille : 50,9 Ko resultats utiles a partir de la cellule AU1

    Une fois sous ce format, le principe c est que je fais des fonctions recherches par rapport au balises , je recupere le contenu de la cellule, je traite pour surpprimer les balises et il ne me reste plus qu q transferer vers une base de donnee. Je dois absolument passer par des fonctions recherches car les balises ne sont pas aux memes endroits dans tous les fichiers

  8. #8
    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
    BON J'AI COMMENCER A INDENTER TON CODE POUR TE MONTRER LES ERREURS DE FICHIER
    chaque couleur représente une balise non fermée
    parti de la il est impossible pour excel de deviner je dis bien IMPOSSIBLE!!!
    il va te falloir utiliser d'autre arguments pour spliter ton texte

    <?xml version="1.0" encoding="UTF-8"?>
    <?mso-infoPathSolution productVersion="11.0.8165" PIVersion="1.0.0.0" href="http://globalvjf/globalpet2003vjfarchive/PE2003VJF/Legacy%20Lux%20PSFs/Forms/GlobalPSFV1A.xsn" name="urn:schemas-microsoft-com:office:infopath:Global-PSF---InfoPath-template:-myXSD-2007-05-25T17-58-20" solutionVersion="1.0.0.1474" ?>
    <?mso-application progid="InfoPath.Document"?>
    <my:myFields xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xmlnshtml="http://www.w3.org/1999/xhtml" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:s1="http://AdsiServices.WhoAmIRequest" xmlns:s2="http://AdsiServices.WhoAmIResponse" xmlns:ns1="http://AdsiServices.AdsiServicesPersonRequest" xmlns:ns2="http://AdsiServices.AdsiServicesPersonResponse" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:tns="http://AdsiServices_WS/findADPerson" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:ns3="http://AdsiServices_WS/getMyAccountInfo" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2007-05-25T17:58:20" xmlnsd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
    <myroject_Number>???</myroject_Number>

    <my:Main_Number>????</my:Main_Number>
    <myroject_Type>??????????</myroject_Type>
    <my:Factory_Location>???</my:Factory_Location>
    <myroject_Description>???????????????</myroject_Description>
    <mySFTitle>??????????????</mySFTitle>
    <my:Revision_Entry_Text>Updated shipping infos</my:Revision_Entry_Text>
    <my:Current_Revision>
    <my:Current_Rev>001</my:Current_Rev>
    <my:Current_Rev_Date>2009-02-04</my:Current_Rev_Date>
    <my:Current_Description>Updated shipping infos</my:Current_Description>
    <my:Current_Modified_by>??????</my:Current_Modified_by>
    <my:ShowHideRevisionHistory>0</my:ShowHideRevisionHistory>
    <my:Current_Project_Number>????</my:Current_Project_Number>
    </my:Current_Revision>
    <my:Revision_Control>
    <my:Revisions>
    <my:Rev>000</my:Rev>
    <myescription>Original Document</myescription>
    <my:Modified_by>????????</my:Modified_by>
    donc tes balises ont un nom du genre"my:Current_Project_Number" ou bien encore "myroject_Type" etc....
    il va te falloir procéder comme ca spliter le texte par les noms
    j'ai résolu un exercice similaire y a pas long temps pour un forumeur tu n'a qua chercher avec mon identifiant et l'indice de recherche "texte "ou xml etc...... ya moins de 3 mois alors ca devrait être facile de le retrouver
    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

  9. #9
    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
    Mais le je ne t'ai fournis que le debut du fichier , le fichier en entier est bien compose de toutes les balises necessaires ...
    Je vais aller voir l exercice que tu as resolus , cela pourra peut etre m aider ...
    mais la mon probleme n'est pas le XML mais bien que excel copie et colle le contenue correctement avant lancement de la macro . Ensuite je l'arrete , et lorsque je souhaite copier et coller une deuxieme fois , la il transforme tout seul .... Alors qu il s agit d un bête copier/coller qui ne devrait poser aucun soucis ... c est ca que j essayer de decrire dans mon premier post ... Et c est a cause de la macro . Car si je ferme completement excel , que je le re-ouvre et que je copie colle sans avoir d abord lancer de macro , la le copier/coller s'effectue bien .. je demander de l aide pour savoir si ce type de comportement de la part d excel c est du deja vu et si il peut etre corrige

  10. #10
    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
    je le répète ca ne viens pas d'Excel ca viens de ton xml
    si excel fait une chose et que tu lui demande faire la même chose 1000 fois avec les même paramètres il refera toujours la même chose

    si c'est pas le cas ca viens d'ailleurs ca c'est certains!!!!!!!! aucune ambiguïté

    et puis non ton fichier même si tu m'a donné que le début déjà pour ce qu' il y a c'est pas valide ca aussi c'est sur !!!!!!!!!!!

    pour vérifier tu n'a qu'a ouvrir un de tes xml avec IE et regarde l'indentation et regarde si tout les éléments sont bien dans leur Nodes

    alors peut être que ces fichiers fonctionnent ailleurs que par Excel parce que l'application qui les conçoit a un parseur mais en vba dans ce cas la il faut le concevoir ce parseur
    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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2012, 11h15
  2. Lien DDE Lancement d'une macro Excel
    Par Ondine_sas dans le forum Macro
    Réponses: 10
    Dernier message: 16/05/2011, 18h09
  3. Réponses: 1
    Dernier message: 01/03/2011, 14h57
  4. lancement d'une macro Excel de SQL Server
    Par batou22003 dans le forum Développement
    Réponses: 2
    Dernier message: 02/08/2010, 01h23
  5. [AC-2003] Exécuter une macro Excel en passant des arguments
    Par tarnx dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/12/2009, 09h40

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