# Aaron PESCASIO

Durant mon alternance, j'ai beaucoup utilisé Excel pour gérer les stocks de l'entreprise. Comme l'entreprise avait beaucoup de fichiers Excel, j'ai créé ce script pour rechercher une valeur dans tous ces fichiers. Ce script m'a permis de gagner du temps en me retournant directement le nom du fichier contenant la valeur recherchée, plutôt que d'avoir à ouvrir chaque fichier un par un.

trouver_inventaireExcel.ps1:

 
            # Un script pour chercher un nom / prenom / numero de serie dans:
            # tous les fichiers Excel inventaire de l'entreprise
            # Et si ça trouve un nom / prenom / numero de serie / numero immo, 
            # le script indiquera le nom de fichier Excel et la "page" ou se trouve la valeur
            
            # Pour voir tel personne a executé tel script à telle date/heure 
            
            $username23 = "$env:USERDOMAIN\$env:USERNAME"
            $date23 = Get-Date -Format "dd/MM/yyyy à HH:mm:ss"
            $log23 = "$username23 a executé le script: trouver_inventaireExcel.bat le $date23"
            Add-Content -Path "\\adds01\LOGI_DRV\logi\ap_script\ap_script_logs\trouver_inventaireExcel.log" -Value $log23
                
            $searchValue = ""
            
            while ($searchValue -eq "") {
                $searchValue = Read-Host "`nVeuillez entrer un nom / prenom / numero de serie que vous voulez chercher (ne peut pas etre vide)"
            }
            
            # Le script copie collera tous les fichiers Excel dans le dossier TEMP du PC, comme ça le script ne touchera jamais aux fichiers du réseau et il travaillera en local
            
            Copy-Item -Path "\\adds01\inventaire\2022\Gestion Parc-informatique*.xlsx" -Destination $env:TEMP
            Copy-Item -Path "\\adds01\inventaire\2021\Gestion Parc-informatique*.xlsx" -Destination $env:TEMP
            Copy-Item -Path "\\adds01\inventaire\2020\Gestion Parc*.xlsx" -Destination $env:TEMP
            Copy-Item -Path "\\adds01\inventaire\2019\Gestion*.xlsx" -Destination $env:TEMP
            Copy-Item -Path "\\adds01\inventaire\2018\Gestion Parc*.xlsx" -Destination $env:TEMP
            
            $excelFiles = GCI "$env:TEMP\gestion*.xlsx","$env:TEMP\dell_vostro.xlsx"
            
            #$excelFiles = Get-ChildItem "$env:USERPROFILE\Desktop\ap_script\2022\Gestion Parc-informatique2022_ecole.xlsx","$env:USERPROFILE\Desktop\ap_script\2022\Gestion Parc-informatique2022_CFAI.xlsx","$env:USERPROFILE\Desktop\ap_script\2022\Gestion Parc-informatique2022_CFAC.xlsx","$env:USERPROFILE\Desktop\ap_script\2021\Gestion Parc-informatique2021_ecole.xlsx","$env:USERPROFILE\Desktop\ap_script\2021\Gestion Parc-informatique2021_CFAI.xlsx","$env:USERPROFILE\Desktop\ap_script\2021\Gestion Parc-informatique2021_CFAC.xlsx","$env:USERPROFILE\Desktop\ap_script\2020\Gestion Parc-Lenovo.xlsx","$env:USERPROFILE\Desktop\ap_script\2020\Gestion Parc-informatique2020_ecole.xlsx","$env:USERPROFILE\Desktop\ap_script\2020\Gestion Parc-informatique2020_CFAI.xlsx","$env:USERPROFILE\Desktop\ap_script\2020\Gestion Parc-informatique2020_CFAC.xlsx","$env:USERPROFILE\Desktop\ap_script\2019\Gestion-informatique2019_CFAIparadis.xlsx","$env:USERPROFILE\Desktop\ap_script\2019\Gestion Parc-informatique2019_ecole.xlsx","$env:USERPROFILE\Desktop\ap_script\2019\Gestion Parc-informatique2019_CFAI.xlsx","$env:USERPROFILE\Desktop\ap_script\2019\Gestion Parc-informatique2019_CFAC.xlsx","$env:USERPROFILE\Desktop\ap_script\2018\Gestion Parc-informatique2018_ecole.xlsx","$env:USERPROFILE\Desktop\ap_script\2018\Gestion Parc-informatique2018_CFAI.xlsx","$env:USERPROFILE\Desktop\ap_script\2018\Gestion Parc-informatique2018_CFAC.xlsx"
            
            foreach ($file in $excelFiles) {
                $excel = New-Object -ComObject Excel.Application
                $workbook = $excel.Workbooks.Open($file.FullName)
            
                $worksheets = $workbook.Worksheets
                foreach ($worksheet in $worksheets) {
                    $range = $worksheet.UsedRange
                    $cells = $range.Cells
                    $searchResult = $cells.Find($searchValue)
                    if ($searchResult -ne $null) {
                        Write-Host "`nLa valeur '$searchValue' existe dans le fichier: $($file.Name) sur la page $($worksheet.Name) `n"
                    }
                }
            
                $workbook.Close()
                $excel.Quit()
                [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
            }
            
            # Supprimer tous les fichiers Excel du dossier TEMP après la recherche de la valeur
            
            Remove-Item -Path "$env:TEMP\gestion*.xlsx" -Force 
          

Vidéo d'exécution du script:


@apescasio