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 :

Découper une chaine avec des espaces en plusieurs cellules [XL-2007]


Sujet :

Macros et VBA Excel

  1. #21
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,
    avec une recherche sur ce site dans la faq, voilà ce que l'on trouve : le lien
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub recupererTextePressePapier()
    'nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
    Dim Resultat As String
     
    With New dataObject
        .GetFromClipboard
        Resultat = .GetText(1)
    End With
     
    MsgBox Resultat
    End Sub
    à adapter bien sur à ce que l'on veut faire
    ici à la place de :
    on aurait pour A5 :
    Tu as ce lien aussi : ici
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  2. #22
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour ryu
    cela fonctionne avec une seule cellules reste a savoir si quand il dit données brutes il parle du tableau créé ou de la valeur de la cellule initiale

    après on peut se passer de l'activation de référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub recupererTextePressePapier()
    'nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
        Dim Resultat As String
        'Set objData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
            .SetText Selection.Value
            .PutInClipboard
            .GetFromClipboard
            Resultat = .GetText(1)
        End With
        MsgBox Resultat
    End Sub
    mais perso j'en vois pas l'utilité dans cet exercice une simple variable string ou numeric selon le besoins fait l'affaire
    maintenant si c'est vraiment le tableau créé avec la chaine découpée qu'il veut alors a la place de selction dans mon exemple il met le "JOIN" de la plage du tableau

    et même la encore inutile une variable string suffit

    la seule utilité de ce stratagème serait le clic droit (copier/coller)mais bon il y en aurait beaucoup a dire
    après j'ai bien d'autre astuces sur ce sujet mais bon voyons ce qu'il en dit
    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. #23
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re Patrick,
    d'accord avec toi; je lui est juste donné des indications car :
    - Comme toi je n'en vois pas l'utilité, surtout que dans la demande initiale … =>
    Citation Envoyé par jchuillier2 Voir le message
    J'ai une (longue) chaine de données que je voudrais découper en plusieurs cellules.
    Mes données de départ sont les suivantes
    1:52.248 1:51.988 1:50.626 1:51.651 1:51.133 1:51.299 1:50.381 1:50.643
    Et je voudrais les découper en cellules comme suit
    A1 1:52.248
    B1 1:51.988
    C1 1:50.626
    D1 1:51.651

    Il y a toujours un espace entre chaque "cellule" donc cela devrait être assez simple mais mes connaissances en vba sont très limtéés.
    En fait je voudrais avoir une cellule ou je peux coller ma chaîne (par exemple A3) et que les cellules individuelles soient remplies à partir de B3, C3, D3, etc....
    … => le résultat ne correspond pas
    Citation Envoyé par jchuillier2 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub testfinal()
    Dim tableau
    With ActiveSheet
    tableau = Split(.Cells(5, 1).Value, " ")
    MsgBox UBound(tableau)
    .Cells(5, 1).Resize(UBound(tableau), 1) = Application.Transpose(tableau)
    End With
    End Sub
    Ca marche nickel, merci de votre aide.

    En amélioration possible de ce code est-ce que je pourrais prendre les données brutes dans le presse papier, et faire juste un CTRL+V sur ma feuille qui mettrait les données à partir du bon endroit (A5) ?

    Encore merci pour tout....
    tout n'est pas clair et je n'en vois pas le but pour le résultat final.
    - comme toi j'attends qu'il se manifeste pour en savoir plus
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  4. #24
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par jchuillier2 Voir le message
    Rebonjour à tous,

    Ca marche.....SAUF QUE

    Ca me modifie le format, ca remplace le . décimal par une , décimale et donc ca me plante le calcul qui suit.

    Comment je peux garder le format d'entrée et juste faire une découpe sans reformatage de virgule et de point ?

    Je peux forcer le système en mettant la colonne complète en format texte, donc si je trouve une astuce pour mettre cette fonction dans la macro c'est parfait....

    Merci beaucoup
    Bonjour


    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
    Sub testfinal()
     
    With ActiveSheet
     
    .Cells(5, 1).Value = "1:52.248 1:51.988 1:50.626 1:51.651 1:51.133 1:51.299 1:50.381 1:50.643 "
     
    tableau = Split(.Cells(5, 1).Value, " ")
     
    nbrLignes = UBound(tableau) - LBound(tableau) + 1' Calculer le nombre de donnees dans tableau
     
    Set dest = .Cells(5, 1).Resize(nbrLignes, 1)
     
    End With
     
    dest.NumberFormat = "@" 'mettre les cellules en format texte si toutes les valeurs de tableau sont de type String
     
    dest.Value = Application.Transpose(tableau)
     
    End Sub
    Cordialement

    Docmarti.

  5. #25
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Coucou

    Alors voila TOUS les détails de mon projet secret

    Je récupère depuis un fichier PDF des temps au tour (course de voitures) au format m:ss.000, par exemple 1:53.236
    J'intègre ca dans excel en mode texte, je passe par 3 cellules intémediaires pour extraire la minute, les secondes et les millièmes pour arriver à 113.236

    la formule pour sortir les minutes est =GAUCHE(A5;1) je stocke ca en colonne C
    la formule pour sortir les secondes est =STXT(A5;3;2) je stocke ca en colonne D
    la formule pour sortir les millièmes est =STXT(A5;6;3) je stocke ca en colonne E
    Ensuite en F je fais =SI(A5<>"";60*C5+D5+E5/1000;"") et j'ai mon résultat en secondes et millièmes

    Bien sur j'ai un problème quand le tour fait plus de 10 minutes (quand on est bloqués au stands par exemple mais je le résoudrai plus tard en disant de prendre tout ce qu'il y a avant le caractère : et ça devrait marcher.

    Donc je sors de mon pdf des temps au tour successifs avec un espace entre chaque tour

    1:53.417 1:54.900 1:53.585 1:53.697 1:53.371 1:53.284 1:53.583 1:53.197 2:09.065 2:07.815 2:05.934 2:02.988

    Et le code que vous m'avez mis au point me permet de transformer ma ligne de temps en colonne avec chaque tour dans une cellule.

    Dans le dernier code que j'utilise je vois 2 choses à améliorer pour mon utilisation

    1) Que l'argument .cells 5, 1 soit remplacé par "fais le dans la cellule actuelle" parce que les résultats du PDF sont sur plusieurs feuilles, je dois donc coller plusieurs fois et pas toujours dans A5, je triche en allant modifier le code de la macro mais si elle pouvait se lancer vers la cellule active ca serait le paradis.
    2) Que je puisse faire un CTRL+V dans cette cellule sans avoir besoin de coller mes données brutes, puis lancer la macro

    En gros si la macro tournait toujours en tache de fond et qu'elle se lance dès que je fais un CTRL+V dans la colonne A j'ai un truc complètement automatisé qui va me permettre de faire des stats sur des courses de 200 tours (on fait de l'endurance) sans faire 200 fois CTRL+C dans le PDF et CTRL+V dans excel.

    Si ca peut aider je vous envoie le xslm avec les résultats de la dernière course

    Un grand merci a vous en tous cas

  6. #26
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Allez j'ai pas pu m'empêcher de faire mumuse avec ca

    tu veux du dynamique au clic droite

    tu a meme le choix du séparateur
    teste ce fichier
    Nom : demo2.gif
Affichages : 685
Taille : 396,7 Ko

    met ceci dans le sheets concerné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     menu
    End Sub
    et ceci dans un module standard
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Dim tableau
    Dim valeur
    Sub menu()
        resetmenu
        Dim SYMB
        SYMB = Array(",", ";", ":", ".", "|", "-", "_", " ")
        nomsymb = Array("vir   "",""", "Pointvir  "";""", "2 points  "":""", "point  "".""", "barre  ""|""", "petit tiret  ""-""", "grand tiret  ""_""", "espace  ""  """)
        'CommandBars("cell").Reset
        Set newpop = CommandBars("cell").Controls.Add(Type:=msoControlPopup, before:=1)
        With newpop
            .Caption = "copier comme tableau par ": Set bout = newpop.Controls.Add(Type:=msoControlButton): With bout: .Caption = "SEPARATEUR": .Enabled = False: End With
            For i = 0 To UBound(SYMB)
                Set bout = newpop.Controls.Add(Type:=msoControlButton)
                With bout
                    .Caption = nomsymb(i)
                    .Tag = SYMB(i)
                    .OnAction = "copie"
                End With
            Next
        End With
        Set newpop = CommandBars("cell").Controls.Add(Type:=msoControlPopup, before:=2)
        With newpop
            .Caption = "coller  tableau en mode": Set bout = newpop.Controls.Add(Type:=msoControlButton): With bout: .Caption = "TRANSPOSITION": .Enabled = False: End With
            Set bout = newpop.Controls.Add(Type:=msoControlButton)
            With bout: .Caption = "vertical": .Tag = 1: .OnAction = "colle": End With
            Set bout = newpop.Controls.Add(Type:=msoControlButton)
            With bout: .Caption = "Horizontal": .Tag = 2: .OnAction = "colle": End With
        End With
    End Sub
    Sub copie()
        Dim SEP
        SEP = CommandBars.ActionControl.Tag
        tableau = Split(Selection.Value, SEP)
        resetmenu
    End Sub
    Sub colle()
        sens = CommandBars.ActionControl.Tag
        Select Case sens
        Case 1: With Range(ActiveCell, ActiveCell.Offset(UBound(tableau), 0)): .NumberFormat = "@": .Value = Application.Transpose(tableau): End With
        Case 2: With Range(ActiveCell, ActiveCell.Offset(0, UBound(tableau))): .NumberFormat = "@": .Value = tableau: End With
        End Select
        resetmenu
    End Sub
    Sub resetmenu()
    CommandBars("cell").Reset
    End Sub
    voila t a du du dynamique
    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. #27
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Coucou,

    Ca à l'air super bien mais ca plante ici avec une erreur 13 en mode vertical

    Quand je fais un debug ca m'envoie dans la section colle à la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Case 1: With Range(ActiveCell, ActiveCell.Offset(UBound(tableau), 0)): .NumberFormat = "@": .Value = Application.Transpose(tableau): End With
    Ca me surligne en jaune la partie application.transpose.

    Et bien sur j'y comprends rien

  8. #28
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonsoir
    essaie mon fichier

    choisi le point ou l'espace ou les doublepoint pour couper le resultat sera différent
    Fichiers attachés Fichiers attachés
    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. #29
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Pareil

    Erreur d’exécution 13:
    Incompatibilité de type

  10. #30
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    re,
    Super Patrick ton petit amusement détente.
    Pas d'erreur (Erreur d’exécution 13) qui plus est sur Excel Mac ça marche très bien

    jchuillier2 :
    Erreur d’exécution 13 => si tu as cela c'est peut être par ce que tu utilises mal la fonction sur clic droit créé par @Patrick

    Edit : En cas de mauvaise utilisation de la fonction il fait bien une erreur d’exécution 13 - il n'y a pas de gestion d'erreur dans le ca d'une mauvaise utilisation
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  11. #31
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    gestion de l'erreur 13

    en fait c'est pacque tu copie pas avant alors tableau est juste un variant vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub colle()
        If IsArray(tableau) Then
        sens = CommandBars.ActionControl.Tag
        Select Case sens
        Case 1: With Range(ActiveCell, ActiveCell.Offset(UBound(tableau), 0)): .NumberFormat = "@": .Value = Application.Transpose(tableau): End With
        Case 2: With Range(ActiveCell, ActiveCell.Offset(0, UBound(tableau))): .NumberFormat = "@": .Value = tableau: End With
        End Select
        End If
        resetmenu
    End Sub
    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

  12. #32
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Bosnoir,

    Désolé, rien à faire ca marche pas, j'ouvre excel, je lance ton fichier "test.xls", j'ouvre le pdf, je copie 10 lignes, je repasse dans excel, je sélectionne le tableau en espace, tout va bien, je sélectionne un collage vertical et la paf erreur 13...

    Je comprends pas pourquoi mais ici ca marche pas

    Merci de l'aide

  13. #33
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,
    j'ai pas annalysé le code mais il me semble que l'on peut copier 1 cellule via le menu clic droit et pas plusieurs cellules, j'ai la même erreur 13

    Un petit code vite fait, tu copies colle les lignes de ton pdf sur excel tu selectionnes la partie à spliter et à transposer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Application.ScreenUpdating = False
        Selection.TextToColumns Selection
        Selection.CurrentRegion.Select
        VA = Selection.Value
        Selection.Clear
        Range(Split(Selection.Address, ":")(0)).Resize(UBound(VA, 2), UBound(VA, 1)).Value = Application.Transpose(VA)
    Application.ScreenUpdating = True
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  14. #34
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    il y a raisons 3 possibles pour l'erreur 13

    soit tu copie pas ta cellule avant, au quel cas le tableau n'est qu'une coquille vide

    soit le texte de la cellules n'a pas de séparateur choisi en l'occurrence ici l'espace

    soit tu essaie de copier coller un tableau déjà dimensionné (sélection multi cellules)

    pour la 3 solution je peut l'ajouter en une seule ligne dans mon joujou clicdroit si tu veux et quoi que !!!!!!,ca fera un bon exercice pour RYU

    je dis bien en une seule ligne hein !!!!RYU
    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

  15. #35
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Je suis content de vous poser un problème un peu plus compliqué qu'au premier abord

    Sachant que mes données PDF viendront toujours avec un espace comme séparateur est-ce qu'on peut bloquer le code pour utiliser espace et en mode vertical pour éliminer cette possibilité d'erreur ?

    On fait un debbuging "sauvage", on fait fonctionner le bazar en mode réduit et on rajoute les options ensuite ?

    Qu'est ce que vous en pensez ?

    Merci

    PS : Je sais pas si ca pose problème mais je ne copie pas les données depuis excel mais depuis un PDF, donc je ne copie pas des cellules mais juste une suite de texte sortant d'un PDF.

  16. #36
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Je suis content de vous poser un problème un peu plus compliqué qu'au premier abord
    je suis désolé mais de compliqué dans cet exercice il n'y a que le demandeur

    si tu a respecté les consignes d'utilisation, il n'y a aucune raisons que ca ne fonctionne pas ca vient d'ailleurs

    car la partie transformation et du niveau débutant donc a la porté de toute personne ayant un peu travaillé avec les variables tableaux


    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    phrase= "tu n a rien compris"' le texte 
    tableau=split(phrase," ")' creation de l'array (1 dimention)
    cells(x,y).resize(ubound(tableau),1)=application.transpose(tableau)''transposition verticale
    résultat
    tu
    n
    a
    rien
    compris


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(x,y).resize(1,ubound(tableau))=tableau
    résultat
    tu n a rien compris

    après pour la partie menu contextuel je peux comprendre que tu ne pige pas ,si tu n'en a jamais fait j'en parlerais donc pas
    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

  17. #37
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    OK Patrick,
    je vais regarder cela, mais d'abord je mange , il faudra attendre un peu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  18. #38
    Membre du Club
    Homme Profil pro
    team manager
    Inscrit en
    Juin 2015
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : team manager
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2015
    Messages : 191
    Points : 67
    Points
    67
    Par défaut
    Ah mais ca c'est sur que j'y comprend rien, sinon j'aurai pas besoin de vous demander

    En meme temps si un jour vous devez régler un chassis de voiture de course parce que sa sous vire en sortant des rapides je suis votre homme

    J'ai fait 2-3 trucs plus compliqués sous access mais excel je maitrise que dalle et la syntaxe MS du vba est tellement pourrie que meme le code le plus simple est de suite illisible.

    Si tu veux je mets mon fichier "originel" en pj mais ce qu'il y a de sur c'est que quand je mets ton code dans mon fichier j'ai erreur 13, et quand je lance ton fichier (donc sans des trucs que j'aurais pu mettre et qui auraient fait déconner le code) ca marche pas non plus.

    Je vais essayer de jouer avec ton code "simple" sans tous les choix de menus que je n'arrive pas à éliminer et voir ce que ca donne.

    Merci

  19. #39
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    envoie ton fichier en xlx (sans macro )
    et tu dis que quand tu essaie mon fichier tu a une erreur 13???????
    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

  20. #40
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    Citation Envoyé par jchuillier2 Voir le message
    Alors voila TOUS les détails de mon projet secret
    Je récupère depuis un fichier PDF des temps au tour (course de voitures) au format m:ss.000, par exemple 1:53.236
    J'intègre ca dans excel en mode texte, je passe par 3 cellules intémediaires pour extraire la minute, les secondes et les millièmes pour arriver à 113.236
    si le but final est d'obtenir les temps en secondes au tour pourquoi passer par des cellules intermédiaires ? Pourquoi ne pas faire cela en VBA et pour l'extraction de données du PDF il y a peut-être la possibilité de le faire aussi en VBA.
    Voici par exemple comment obtenir les temps au tour en secondes à partir de la ligne que tu nous a mis en exemple. J'utilise ce "lourdaud" de regex avec motif et sous-motifs.
    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
    21
    22
    23
    24
    25
    26
    27
    Public Sub EclateTempsAuto()
        Dim regEx As Object
        Dim strInput As String
        Dim OMatches, OMatch, OSubMatch
        Dim Rslt() As String
        Dim NbElem, DimRslt As Integer
        Set regEx = CreateObject("VBScript.RegExp")
        strInput = ActiveSheet.Range("K1").Value
        Debug.Print strInput
        With regEx
            .Global = True
            .IgnoreCase = False
            ' motif avec 3 sous-motifs (entre parenthèses)
            .Pattern = "([0-9]+):([0-9]+).([0-9]+)"
        End With
        ' On recherche tous les éléments
        Set OMatches = regEx.Execute(strInput)
        NbElem = OMatches.Count
        Debug.Print NbElem & " élément(s) trouvé(s)"
        For Each OMatch In OMatches
          If OMatch.SubMatches.Count = 3 Then
          Temps = OMatch.SubMatches(0) * 60 + OMatch.SubMatches(1) + OMatch.SubMatches(2) / 1000
          Debug.Print OMatch & " -->  " & Temps
          Debug.Print "=================="
          End If
        Next
    End Sub
    Résultat :
    1:52.248 1:51.988 1:50.626 1:51.651 1:51.133 1:51.299 1:50.381 1:50.643*
    8 élément(s) trouvé(s)
    1:52.248 --> 112,248
    ==================
    1:51.988 --> 111,988
    ==================
    1:50.626 --> 110,626
    ==================
    1:51.651 --> 111,651
    ==================
    1:51.133 --> 111,133
    ==================
    1:51.299 --> 111,299
    ==================
    1:50.381 --> 110,381
    ==================
    1:50.643 --> 110,643
    ==================
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 9 PremièrePremière 123456 ... DernièreDernière

Discussions similaires

  1. Faire suivre une variable avec des espaces
    Par jonathan34 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 14/02/2008, 20h57
  2. soucis de chaine avec des espaces
    Par glouffy6 dans le forum Langage
    Réponses: 10
    Dernier message: 31/07/2007, 16h40
  3. [Débutant] Scinder une chaine avec des points
    Par poiwalt dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 06/07/2007, 20h09
  4. passer d'une chaine contenant des espaces a un tableau
    Par flyfrog dans le forum Contribuez
    Réponses: 3
    Dernier message: 26/06/2006, 20h12
  5. [VB.NET] Compléter une chaine avec des espaces
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 09h09

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