Recopier en boucle les infos dans *.txt sur Excel

Bonjour,

Excellent, c'est exactement cela.

Merci beaucoup.

Je vais découper les morceaux de textes non utile et puis c'est bon.

Je peux utiliser cette commande dans ma boucle pour supprimer le superflu ?

MsgBox Mid("Vendredi", 5, 2) ' renvoie "re"

Une autre question:

Quelle est la commande pour insérer une nouvelle ligne entre 2 lignes contenant déjà des infos .

Car avant d'insérer une nouvelle infos,

je ferais un test pour voir si la colonne H est existant:

Si oui alors j'insère une nouvelle ligne juste en dessous de la ligne trouvée

et je copie la nouvelle infos dans la nouvelle ligne insérée.

Sinon je recopie à la fin du tableau comme normal.

Je vous souhaite un très bon début de semaine.

Cordialement,

Bonjour

fred80 a écrit :

Je peux utiliser cette commande dans ma boucle pour supprimer le superflu ?

MsgBox Mid("Vendredi", 5, 2) ' renvoie "re"

Si tu veux supprimer "re" dans vendredi, moi j'utiliserais :

MsgBox Left("Vendredi", 4) & Right("Vendredi", 2)

Quelle est la commande pour insérer une nouvelle ligne entre 2 lignes contenant déjà des infos .

Supposons que tu veuilles insérer une ligne entre les lignes 14 et 15. L'instruction sera :

Rows(14).Insert shift:=xlDown

Bye !

Bonjour,

Voici le résultat obtenu en bidouillant un peu.

Maintenant, j'ai accés à mon fichier source qui est en pdf.

Pouvez-vous m'aider à l'adapter pour ce fichier pdf svp ?

Un très grand merci

Bonne journée.

Bonjour

Désolé, mais je ne trouve pas.

Et en recherchant, j'ai trouvé" comment ouvrir un fichier pdf avec une macro mais je doute qu'il soit possible de le convertir ensuite avec une macro en en fichier Excel.

Il te faudra donc le faire à la main, mais ça, tu sais faire :

* Edition - Sélectionner tout

* Edition - Copier

Ouvrir un nouveau fichier exel

Aller sur la cellule A1 et faire "Coller"

Désolé de ne pouvoir t'aider davantage.

Bye !

Bonjour Gmb et Bonjour à tous

Après plusieurs jours de recherche intensif, voici le code pour:

1- ouvrir un fichier pdf depuis excel

2- faire un copier/coller

3- fermer le fichier pdf

4- coller toutes les infos dans une feuille excel temporaire.

5- lancer vos codes précédents...

Mais je n'arrive pas à insérer ce bout de code dans la boucle de votre programme.

Pourriez-vous m'aider svp à substituer ce morceau de code

à la place de l'ouverture du fichier txt ?

Merci beaucoup et bonne journée.

"Sub Ouvrirpdf()

ThisWorkbook.FollowHyperlink ""C:\macro\fichiersource.pdf""

Application.OnTime Now + TimeValue(""00:00:03""), ""Copier""

End Sub

Private Sub Copier()

SendKeys (""^a"")

SendKeys (""^c"")

Shell ""TASKKILL /IM AcroRd32.exe /F ""

Application.OnTime Now + TimeValue(""00:00:03""), ""Coller""

End Sub

Private Sub Coller()

AppActivate ""Microsoft Excel""

Application.Goto ActiveWorkbook.Sheets(""Sheet2"").Cells(1, 1)

Range(""A1"").Activate

SendKeys (""^v"")

End Sub"

Bonjour

J'ai recopié ta macro dans un module.

Là, tout s'écrit en rouge.

Normal, il y a beaucoup de guillemets en trop.

J'ai enlevé tous ceux qui me semblaient gênant.

En mettant une bonne adresse du fichier pdf, je le vois alors s'ouvrir, ses données se sélectionner et se copier, mais, cela bug au moment de coller : il ne trouve pas la feuille où faire ça.

En bidouillant, je n'ai réussi qu'à le copier dans la feuille de code : si j'avais voulu faire ça, (mais pouquoi mon Dieu ?) je n'aurais jamais trouvé comment faire.

Bref, je sens qu'on n'est pas loin mais je cale...

Bye !

Oui en effet il y a des guillemets dédoublés lorsque j'ai recopié le code ici.

Mais ce code fonctionne très bien en ouvrant 1 seul fichier.

Votre version d'excel est en francais ?

Si oui il faudrait remplacer

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(1, 1)

par

Application.Goto ActiveWorkbook.Sheets("Feuille2").Cells(1, 1)

Autre chose: le temps d'attente doit être supérieur au temps d'exécution de la commande.

Peut-être augmenter ce temps à 5-10 secondes pour voir.

Sub Ouvrirpdf()

ThisWorkbook.FollowHyperlink "C:\macro\fichiersource.pdf"

Application.OnTime Now + TimeValue("00:00:05"), "Copier"

End Sub

Private Sub Copier()

SendKeys ("^a")

SendKeys ("^c")

Shell "TASKKILL /IM AcroRd32.exe /F "

Application.OnTime Now + TimeValue("00:00:05"), "Coller"

End Sub

Private Sub Coller()

AppActivate "Microsoft Excel"

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(1, 1)

Range("A1").Activate

SendKeys ("^v")

End Sub

Toutes mes tentatives sont vaines.

Avec Excel 2013, ça plante à l'instruction : '

 AppActivate "Microsoft Excel"

A croire que la macro ne puisse pas trouver Excel !

Et avec Excel 2003, j'obtiens la feuille copiée dans le code VBA. Là aussi, peut-être qu'à défaut de trouver Excel elle le colle dans une feuille VBA ?

capture

Bye !

Bonjour,

J'ai copié le code Ouvrirpdf (une nouvelle version) dans le meme fichier de travail en pièce jointe.

https://www.cjoint.com/c/EHhxLqqYqUo

Testé ok avec excel 2003 et 2010.

Fonctionne bien, mais tout est copié sur la case A1

et non pas sur 62 lignes en colonne A.

Depuis un ordinateur de mon entreprise, le code (l'ancienne version) copie bien les données sur 62 lignes !

Bizarre, cela doit s'arranger dans les options de excel ??

Bonne journée,

Cordialement.

Bonjour

Bizarre en effet !

Pour ma part, comme je l’ai déjà dit, je ne parviens qu’à le recopier au beau milieu de mon code !

Et je ne vois pas comment sortir de là !

Désolé !

Bye !

Bonjour à tous,

Voici l'avancement de mon projet.

https://www.cjoint.com/c/EHjmGmZ3VEo

On est presque au bout.

Il me reste encore à faire la boucle "ouvrir tous les pdf"

(pouvez-vous m'aider svp, j'ai mis l'algo mais je ne sais pas l'écrire correctement en VBA)

Le code bug alors j'ai mis tout cette étape en commentaire.

Si on saute la première étape (ouvrir le pdf, copier et coller, un par un du répertoire)

Une fois que j'ai copié les infos dans mon onglet excel temporaire nommée "Source",

je recopie les données à partir de là dans mon tableau.

Gmb: je n'ai pas encore bien compris la fonction Choose alors j'ai encore bidouillé pour recopier ces infos.

Ce n'est pas très propre, je sais... Si vous voulez bien me corriger. Merci beaucoup.

Cordialement.

Bonjour

fred80 a écrit :

pouvez-vous m'aider svp

Ce serait avec grand plaisir mais je n’ai pas la solution.

Celle que je connais consiste à ouvrir des documents Excel, à les exploiter puis à les refermer pour passer à un autre avec une boucle en code VBA

Mais pour des documents PDF, c’est autre chose : je peux les ouvrir mais c’est tout.

Et imaginer de combiner ta méthode exécutable avec ma boucle VBA, cela me semble relever de l’utopie. Mais on peut toujours rêver et tenter…

Malheureusement pour moi (et donc pour toi) ta méthode ne fonctionne pas sur mon PC. Je ne puis donc faire aucun essai.

Sincèrement, je suis désolé.

Quant à la fonction choose dont tu parles, je ne la retrouve pas dans les macros de ton fichier…

Bye !

Bonjour Gmb,

Vous avez tout à fait raison.

Maintenant, je passe au plan B.

Il consiste à convertir tous les fichiers pdf au format txt à l'aide d'un programme externe (en boucle).

Il s'agit d'une étape supplémentaire fait à la main.

Mais il est parfois plus facile de réaliser 2 petites opérations que d'en faire une grande, disait mon ancien patron.

Donc, je continue mon projet avec votre code "Classeur1 v5.xls".

https://www.cjoint.com/c/EHkxfy0vJwo

J'essaie d'ajouter une fonction recherche sur la colonne H avant chaque importation.

Si la valeur en colonne H existe déjà alors insérer une nouvelle ligne juste en dessous,

puis copier les infos dans cette nouvelle ligne.

Sinon copier à la fin du tableau normalement.

Avec ce code est-ce que je suis sur la bonne voie ?

Set C = .Find("Colonne H", LookIn:=xlValues)

If Not C Is Nothing Then

FirstRow = C.Row

Do

C.Offset(1, 0).Insert Shift:=xlDown

Set C = .FindNext(C)

Loop While Not C Is Nothing And C.Row <> FirstRow

End If

Bonne journée

Cordialement,

Bonjour

fred80 a écrit :

Avec ce code est-ce que je suis sur la bonne voie ?

Avec ce code est-ce que je suis sur la bonne voie ?

Pas tout à fait.

Si la valeur que tu cherches dans la colonne H est contenue dans la variable v, j’utiserais plutôt ce code :

    Set c = Columns("H:H").Find(v, LookIn:=xlValues)
    If Not c Is Nothing Then
        FirstRow = c.Row
        Do
            Rows(c.Row + 1 & ":" & c.Row + 1).Insert Shift:=xlDown
            Set c = Cells.FindNext(after:=ActiveCell)
        Loop While Not c Is Nothing And c.Row <> FirstRow
    End If

OK ?

Bye !

Bonjour,

Je n'arrive pas à le faire fonctionner dans votre code.

Soit il y a des erreurs de syntaxe,

soit c'est une boucle infini et excel plante.

Comme je ne suis pas doué, je cherche au tatons

en changeant 1 paramètre à la fois puis j'essaie de lancer le programme...

Mais cela ne marche pas encore !

Cordialement.

Joins ton fichier, avec le code tel qu'il est et je regarderai ce qui ne va pas.

Bye !

Bonjour Gmb,

Voici le fichier excel en lien.

Le bout de code qui ne fonctionne pas est en commentaire.

https://www.cjoint.com/c/EHlxjSTL3po

Merci de votre aide.

Bonne journée.

Bonjour

Un essai à tester.

17classeur1-v6.zip (119.23 Ko)

Bonjour,

Excellent, votre programme fonctionne à merveille. Encore mille merci à vous.

Je peaufine encore le code:

La colonne O est unique, je recopie le code de la colonne H:

vho = Right(Trim(Range("A49")),6)

Set cell = fdep.Columns("O:O").Find(vho, lookat:=xlWhole)

If Not cell Is Nothing Then

ln = cell.Row

While fdep.Cells(ln, "O") = fdep.Cells(ln + 1, "O")

ln = ln + 1

Wend

"passer fichier suivant ?"

End If

Bonne journée.

Cordialement,

Rechercher des sujets similaires à "recopier boucle infos txt"