# Charger l'assembly Windows Forms Add-Type -AssemblyName System.Windows.Forms # Définir la fonction de recherche function Rechercher($recherche) { Write-Host "Chemin d'accès du script : $PSScriptRoot" # Construit les chemins complets des fichiers CSV $csvFilePath = Join-Path -Path $PSScriptRoot -ChildPath $indexcsv #$csvFilePath = "C:\Users\glion\Desktop\LOG et SCAM\index.csv" # Convertir la chaîne de recherche en une forme normalisée Unicode $recherche = $recherche.Normalize([System.Text.NormalizationForm]::FormC) # Utilise la commande "Import-Csv" pour charger le fichier CSV en mémoire $csvData = Import-Csv -Path $csvFilePath -Encoding UTF8 -Delimiter ";" # Filtrer les résultats en fonction de la colonne "fichier" et de la recherche $results = $csvData | Where-Object { $_.fichier.Normalize([System.Text.NormalizationForm]::FormC) -like "*$recherche*" } # Effacer la liste des résultats précédents $ListBox.Items.Clear() foreach ($result in $results) { # Ajouter les valeurs de la colonne "fichier" correspondantes à la liste $ListBox.Items.Add($result.fichier) } # Trier les éléments de la ListBox par ordre alphabétique $ListBox.Sorted = $true if ($results.Count -gt 0) { $resultMsg = "résultat" if ($results.Count -gt 1) { $resultMsg = "résultats" } $resultatLabel.Text = "$($results.Count) $resultMsg trouvés." } else { [System.Windows.Forms.MessageBox]::Show("Aucun résultat trouvé pour '$recherche'.", "Résultat de la recherche", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information) $resultMsg = "résultat" $resultatLabel.Text = "$($results.Count) $resultMsg trouvés." } } # Créer une fenêtre Windows Forms $Form = New-Object System.Windows.Forms.Form $Form.Text = "Moteur de Recherche CSV" $Form.Size = New-Object System.Drawing.Size(400, 300) # Créer une zone de texte pour la recherche $TextBox = New-Object System.Windows.Forms.TextBox $TextBox.Location = New-Object System.Drawing.Point(10, 10) $TextBox.Size = New-Object System.Drawing.Size(280, 20) $Form.Controls.Add($TextBox) # Créer un bouton de recherche $Button = New-Object System.Windows.Forms.Button $Button.Location = New-Object System.Drawing.Point(300, 10) $Button.Size = New-Object System.Drawing.Size(80, 20) $Button.Text = "Rechercher" $Button.Add_Click({ $searchTerm = $TextBox.Text.ToLower() # Convertir en minuscules pour la recherche insensible à la casse Rechercher $searchTerm # Appeler la fonction Rechercher avec le terme de recherche saisi }) $Form.Controls.Add($Button) # Créer une liste pour afficher les résultats $ListBox = New-Object System.Windows.Forms.ListBox $ListBox.Location = New-Object System.Drawing.Point(10, 40) $ListBox.Size = New-Object System.Drawing.Size(370, 190) $Form.Controls.Add($ListBox) # Activer la sélection d'un seul élément dans la liste $ListBox.SelectionMode = [System.Windows.Forms.SelectionMode]::One # Ajouter un gestionnaire d'événements pour le double-clic sur un élément de la liste $ListBox.Add_DoubleClick({ $selectedItem = $ListBox.SelectedItem if ($selectedItem -ne $null) { [System.Windows.Forms.Clipboard]::SetText($selectedItem.ToString()) } }) # Créer un label pour afficher le nombre de résultats $resultatLabel = New-Object System.Windows.Forms.Label $resultatLabel.Location = New-Object System.Drawing.Point(10, 230) $resultatLabel.Size = New-Object System.Drawing.Size(200, 20) $Form.Controls.Add($resultatLabel) # Afficher la fenêtre $Form.ShowDialog() # Nettoyer la fenêtre lorsque vous avez terminé $Form.Dispose()