Copier titres de document pour mettre dans excel

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Dragor76
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 14 avr. 2022 16:48
Status : Hors ligne

Copier titres de document pour mettre dans excel

#1

Message par Dragor76 »

Bonjour,

Ma demande est simple mais, pour moi, très compliqué

J'ai une liste de 36 fichiers pdf dans un dossier connu
J'aimerai copier leurs titres pour le mettre dans la colonne A d'un fichier excel connu

J'ai pas réussi à trouver tous seul :/

Merci
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Copier titres de document pour mettre dans excel

#2

Message par Tlem »

Bonsoir.
1 - Est-ce que les fichiers PDF sont à la racine de ce dossier et uniquement à la racine ?
2 - Est-ce que ces dossiers risquent d'être organisés dans des sous dossiers du dossier connu ?

Dans le cas N°1, utilisez la commande _FileListToArray() pour créer un tableau de la liste des fichiers du dossier connu (si vous suivez le lien, vous y trouverez le détail de la commande ainsi qu'un exemple).

Dans le cas N°2 utilisez la commande _FileListToArrayRec() (même chose que ci-dessus, mais scan les sous dossiers).

Un fois le tableau obtenu, il vous suffit de faire une boucle de lecture du tableau (de la liste des fichiers) avec la commande For (Lien pour les explications)
Et pour chaque éléments vous insérez l'information dans votre feuille Excel (probablement avec la commande _Excel_RangeWrite())
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Dragor76
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 14 avr. 2022 16:48
Status : Hors ligne

Re: Copier titres de document pour mettre dans excel

#3

Message par Dragor76 »

Code : Tout sélectionner

#include <Excel.au3>
#include <File.au3>

Local $aArray1D = _FileListToArrayRec ( "C:\Users\Antoine\Desktop\FDS  full", "*", 0, 1, 0, 0) 
Local $sFilePath1 = @ScriptDir & "Liste a remplir.xlsx" 											;This file should already exist
Local $oExcel = _ExcelBookOpen($sFilePath1)

_Excel_RangeWrite($liste, "FDS", $aArray1D, "A2")
Mes tentatives m'ont menée à ça sans pour autant que ça marche.

J'obtient: C:\Users\ABC\Desktop\nom prod.au3" (12) : ==> Unknown function name.:
Local $oExcel = _ExcelBookOpen($sFilePath1)
Local $oExcel = ^ ERROR
>Exit code: 1

Je n'arrive pas à ouvrir un fichier Excel déjà existant et à y mettre ce que je veux dedans

Pouvez vous m'expliquer mon erreur ?
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Copier titres de document pour mettre dans excel

#4

Message par walkson »

Bonjour,
Il y a plusieurs erreurs
Local $sFilePath1 = @ScriptDir & "\Liste a remplir.xlsx"
Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, Default, Default, True)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray2D, "B1")
en prenant l'exemple de l'aide
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Dragor76
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 14 avr. 2022 16:48
Status : Hors ligne

Re: Copier titres de document pour mettre dans excel

#5

Message par Dragor76 »

CA MARCHE
MERCI !
Dragor76
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 14 avr. 2022 16:48
Status : Hors ligne

Re: Copier titres de document pour mettre dans excel

#6

Message par Dragor76 »

Ok je ne sais pas jusqu'à quel point je peux demander de l'aide ou si je dois refaire un sujet pour ça Donc dans tout les cas excusez-moi
grace à vos conseils et à d'autres sujets j'ai assemblé cette "chose"
Théoriquement si j'arrive a faire en sorte que $filename prenne le premier fichier texte d'un dossier contenant tous les fichier à lire et descende à chaque boucle (ex: boucle 4 lecture du 4eme fichier) j'aurai un peu près réussi à faire ce que je veux.
J'aimerai toutefois vos avis et savoir si il y a pas des trucs à améliorer ?

Code : Tout sélectionner

HotKeySet( "{END}", "_Exit")       																			;arret d'urgence

Func _Exit()
    Exit
EndFunc

#include <file.au3>																					
#include <Excel.au3>

Global $cheminFichier =("C:\Users\Antoine\Desktop\FDS Gadec full")
Global $nbreFichier = DirGetSize($cheminFichier,1)


;---------------------------------------------------------------------																	;s'occupe des noms de prod
Local $aNom_prod = _FileListToArrayRec ( $cheminFichier, "*", 1, 1, 0, 0) 
Local $sFilePath1 = @ScriptDir & "\Gadec.xlsx" 
Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oExcel, $sFilePath1, Default, Default, True)

_Excel_RangeWrite($oWorkbook, "FDS", $aNom_prod, "A2")


;-------------------------------------------------------------------																	;s'occupe des numéros CAS
For $i = 1 to $nbreFichier step 1

	;-------------------------------------------																;lit le CAS de la FDS
	Dim $CAS = "No.-CAS ", $text      											
	$filename = 'FDS ACIDE NITRIQUE.txt'										
	$filename2 = 'recup.txt'
	;-------------------------------------------

	$file = FileOpen($filename, 0)													

	While 1																						
		$line = FileReadLine($file)																				;lit des ligne de txt dans un fichier = ouvre filename est lit un txt dedans
		If @error = -1 Then ExitLoop												

		If StringInStr($line, $CAS) Then																		;Recherche la position d'un txt dans un fichier. = recherche dans text2 le mot pseudo1
		   $text &= StringReplace($line, $CAS, "") & @CRLF											;text mtn égale à: remplace .....	   
		EndIf			
	Wend

	FileWrite($filename2, $text)    													
	FileClose($filename)																


	;---------------------------------------------------														;SUPPRIME LES DOUBLONS
	Dim $aArray, $aNewArray
	;---------------------------------------------------
	_FileReadToArray($filename2, $aArray)
	_ArrayDelete($aArray, 0)
	$aNewArray = _ArrayUnique($aArray)
	_FileWriteFromArray($filename2, $aNewArray, 1)


	;---------------------------------------------------														;SUPPRIMER LETTRES, marche pas ouf
	$newtext = StringReplace(FileRead("recup.txt"), "No." & @crlf, "")				
	$file = FileOpen("recup.txt", 2)
	FileWrite($file, $newtext)
	FileClose($file)								

Next
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Copier titres de document pour mettre dans excel

#7

Message par walkson »

Faites un nouveau sujet car votre demande ne concerne plus Excel
Et merci de bien expliquer ce que vous voulez faire car ici "on devine" :roll: et aussi si votre code est fonctionnel (dans le cas présent, j'en doute ! avec For $i = 1 to $nbreFichier step 1)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre