#Script du formulaire principal # Obtenez le chemin complet du dossier où se trouve le script en utilisant $PSScriptRoot $scriptPath = $PSScriptRoot #write-host $scriptPath cls Add-Type -AssemblyName System.Windows.Forms # Définir le chemin d'accès du fichier Excel $indexcsv = ".\Index.csv" $auteurcsv = ".\Auteur.csv" # Fonction pour effectuer la recherche function Rechercher($recherche) { $csvFile = $auteurcsv # Convertit la chaîne de recherche en une forme normalisée Unicode $recherche = $recherche.Normalize([System.Text.NormalizationForm]::FormC) # Ajoute une boîte de dialogue de message pour demander à l'utilisateur s'il veut afficher uniquement les éléments avec la colonne TITREFILM remplie et les autres colonnes vides if ([string]::IsNullOrEmpty($recherche)) { $confirmation = [System.Windows.Forms.MessageBox]::Show("Voulez-vous afficher uniquement les NOK ?", "Afficher uniquement les éléments NOK à remplir ?", [System.Windows.Forms.MessageBoxButtons]::YesNo, [System.Windows.Forms.MessageBoxIcon]::Question) if ($confirmation -eq [System.Windows.Forms.DialogResult]::Yes) { # Utilise la commande "Where-Object" pour filtrer les résultats avec la colonne TITREFILM remplie et les autres colonnes vides $resultats = Import-Csv $csvFile -Delimiter ";" -Encoding UTF8 | Where-Object { $_.TITRECORRIGER -like "*$recherche*" -and $_.REALISATEUR -eq "" -and $_.PRODUCTION -eq "" -and $_.ANNEEDEPRODUCTION -eq "" -and $_.GENRE -eq "" -and $_.SOUSTITRE -eq "" -and $_.NUMEROEPISODE -eq "" -and $_.SAISON -eq "" -and $_.SCENARISTE -eq "" -and $_.PAYSDEPROD -eq "" -and $_.CODEOEUVRE -eq "" } } else { # Utilise la commande "Where-Object" pour filtrer les résultats sans la condition supplémentaire $resultats = Import-Csv $csvFile -Delimiter ";" -Encoding UTF8 | Where-Object { $_.TITREFILM.Normalize([Text.NormalizationForm]::FormC) -like "*$recherche*" } } } else { # Utilise la commande "Where-Object" pour filtrer les résultats sans la condition supplémentaire $resultats = Import-Csv $csvFile -Delimiter ";" -Encoding UTF8 | Where-Object { $_.TITREFILM.Normalize([Text.NormalizationForm]::FormC) -like "*$recherche*" } } $listbox.Items.Clear() foreach ($resultat in $resultats) { $listbox.Items.Add($resultat.TITREFILM) } # Trie les éléments de la ListBox par ordre alphabétique $listbox.Sorted = $true if ($resultats.Count -gt 0) { $resultatMsg = "résultat" if ($resultats.Count -gt 1) { $resultatMsg = "résultats" } $resultatLabel.Text = "$($resultats.Count) $resultatMsg trouvés." $modifierButton.Enabled = $true } 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) $resultatMsg = "résultat" $resultatLabel.Text = "$($resultats.Count) $resultatMsg trouvés." $modifierButton.Enabled = $false } } # Fonction pour effectuer la recherche des doublons function RechercherDoublons { $csvFile = $auteurcsv # Utilise la commande "Group-Object" pour trouver les doublons exacts dans la colonne TITREFILM $doublons = Import-Csv $csvFile -Delimiter ";" -Encoding UTF8 | Group-Object TITREFILM | Where-Object { $_.Count -gt 1 } if ($doublons.Count -gt 0) { $resultatMsg = "doublon" if ($doublons.Count -gt 1) { $resultatMsg = "doublons" } $resultatLabel.Text = "$($doublons.Count) $resultatMsg trouvés." $modifierButton.Enabled = $false # Efface la liste actuelle et affiche les doublons dans la zone de liste avec une colonne supplémentaire pour le nombre de fois où le doublon apparaît $listeDoublons = @() foreach ($doublon in $doublons) { $listeDoublons += $doublon } $listeDoublons = $listeDoublons | Sort-Object -Property Count -Descending $listbox.Items.Clear() foreach ($doublon in $listeDoublons) { $listbox.Items.Add("$($doublon.Name) ($($doublon.Count) occurrences)") } } else { [System.Windows.Forms.MessageBox]::Show("Aucun doublon trouvé.", "Résultat de la recherche", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information) $resultatLabel.Text = "$($doublons.Count) doublons trouvés." $modifierButton.Enabled = $false } } ##FIN function Rechercheduree { # Vérifier si le fichier vidéo existe if (Test-Path $cheminVideo) { # Créer un objet Shell pour accéder aux propriétés du fichier $shell = New-Object -ComObject Shell.Application $dossier = $shell.Namespace((Get-Item $cheminVideo).DirectoryName) $fichier = $dossier.ParseName((Get-Item $cheminVideo).Name) # Obtenir la durée du fichier vidéo (en secondes) $dureePropriete = $dossier.GetDetailsOf($fichier, 27) # Convertir la durée en format lisible (heures:minutes:secondes) $duree = [TimeSpan]::ParseExact($dureePropriete, "h\:mm\:ss", $null) # Mettre la durée dans $dureefilm $dureefilm = $duree.ToString() # Mettre à jour le texte dans le contrôle de texte $dureefilmTextbox.text = $dureefilm } else { Write-Host "Le fichier vidéo n'existe pas." } } function LectureVideo { $selectedItem = $listBox.SelectedItem.Trim() $csvData = Import-Csv $indexcsv -Delimiter ";" -Encoding UTF8 $foundItems = $csvData | Where-Object {$_.Fichier.Trim() -eq $selectedItem} if ($foundItems.Count -eq 0) { [System.Windows.Forms.MessageBox]::Show("Le fichier sélectionné n'a pas été trouvé dans le CSV.") return } $cheminVideo = $foundItems[0].Chemin Rechercheduree $vlcExe = "C:\Program Files\VideoLAN\VLC\vlc.exe" $arguments = """$cheminVideo""" Write-Host "Lancement de VLC avec les arguments : $arguments" Start-Process $vlcExe $arguments } # Créer une fenêtre de formulaire $form = New-Object System.Windows.Forms.Form $form.Text = "Recherche de film" $form.Width = 460 $form.Height = 330 $form.FormBorderStyle = "FixedSingle" $form.ControlBox = $true $form.MaximizeBox = $false $form.MinimizeBox = $false # Créer un contrôle Label pour afficher le texte au-dessus de la zone de recherche $rechercheLabel = New-Object System.Windows.Forms.Label $rechercheLabel.Text = "Rechercher une oeuvre à modifier :" $rechercheLabel.AutoSize = $true $rechercheLabel.Location = New-Object System.Drawing.Point(10, 10) $form.Controls.Add($rechercheLabel) # Créer un label pour afficher le nombre de résultats trouvés $resultatLabel = New-Object System.Windows.Forms.Label $resultatLabel.AutoSize = $true $resultatLabel.Location = New-Object System.Drawing.Point(10, 60) $form.Controls.Add($resultatLabel) # Créer une zone de texte pour la saisie de la recherche $textbox = New-Object System.Windows.Forms.TextBox $textbox.Location = New-Object System.Drawing.Point(10, 30) $textbox.Size = New-Object System.Drawing.Size(200, 20) $form.Controls.Add($textbox) # Créer une zone de liste pour les résultats de la recherche $listbox = New-Object System.Windows.Forms.ListBox $listbox.Location = New-Object System.Drawing.Point(10, 80) $listbox.Size = New-Object System.Drawing.Size(300, 200) $listBox.Name = "MaListbox" $form.Controls.Add($listbox) # Créer un bouton pour lancer la recherche $button = New-Object System.Windows.Forms.Button $button.Location = New-Object System.Drawing.Point(220, 10) $button.Size = New-Object System.Drawing.Size(100, 25) $button.Text = "Rechercher" $form.Controls.Add($button) # Créer un bouton pour modifier les valeurs liées à la ligne correspondant au film sélectionné $modifierButton = New-Object System.Windows.Forms.Button $modifierButton.Location = New-Object System.Drawing.Point(330, 10) $modifierButton.Size = New-Object System.Drawing.Size(100, 50) $modifierButton.Text = "Modifier" $modifierButton.Enabled = $Enable $form.Controls.Add($modifierButton) # Créer un bouton pour modifier les valeurs liées à la ligne correspondant au film sélectionné $DiffusioncertButton = New-Object System.Windows.Forms.Button $DiffusioncertButton.Location = New-Object System.Drawing.Point(330, 150) $DiffusioncertButton.Size = New-Object System.Drawing.Size(100, 50) $DiffusioncertButton.Text = "Diffusion et Certificat" $DiffusioncertButton.Enabled = $true $form.Controls.Add($DiffusioncertButton) # Créer un bouton pour ajouter les NOK $NOKButton = New-Object System.Windows.Forms.Button $NOKButton.Location = New-Object System.Drawing.Point(330, 220) $NOKButton.Size = New-Object System.Drawing.Size(100, 50) $NOKButton.Text = "Recherche et ajout des NOK" $NOKButton.Enabled = $true $form.Controls.Add($NOKButton) # Ajouter le bouton Play $btnPlay = New-Object System.Windows.Forms.Button $btnPlay.Location = New-Object System.Drawing.Point(330, 80) $btnPlay.Size = New-Object System.Drawing.Size(100, 50) $btnPlay.Text = "Lire la vidéo" $btnPlay.Add_Click({ Lecturevideo }) $form.Controls.Add($btnPlay) #Créer un bouton pour rechercher les doublons exacts $doublonButton = New-Object System.Windows.Forms.Button $doublonButton.Location = New-Object System.Drawing.Point(220,40) $doublonButton.Size = New-Object System.Drawing.Size(100, 25) $doublonButton.Text = "Doublon" $doublonButton.Add_Click({ RechercherDoublons }) $form.Controls.Add($doublonButton) # Événement pour le clic sur le bouton de recherche $button.Add_Click({ $recherche = $textbox.Text Rechercher $recherche }) # Événement pour le clic sur le bouton "Modifier" $modifierButton.Add_Click({ $data = Import-Csv ".\auteur.csv" -Delimiter ";" -Encoding UTF8 $nomrealisateurs = $data | Select-Object -ExpandProperty REALISATEUR -Unique # Créer une fenêtre de formulaire pour la modification des valeurs $modifForm = New-Object System.Windows.Forms.Form $modifForm.Text = "Modification des valeurs" $modifForm.Width = 450 $modifForm.Height = 480 $modifForm.FormBorderStyle = "FixedSingle" # Créer des zones de texte pour les nouvelles valeurs $titrefilmTextbox = New-Object System.Windows.Forms.TextBox $titrefilmTextbox.Location = New-Object System.Drawing.Point(120, 10) $titrefilmTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($titrefilmTextbox) #Durée $dureefilmTextbox = New-Object System.Windows.Forms.TextBox $dureefilmTextbox.Location = New-Object System.Drawing.Point(330,40) $dureefilmTextbox.Size = New-Object System.Drawing.Size(80, 30) $modifForm.Controls.Add($dureefilmTextbox) # Créer des zones de texte pour les nouvelles valeurs $titreTextbox = New-Object System.Windows.Forms.TextBox $titreTextbox.Location = New-Object System.Drawing.Point(120, 40) $titreTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($titreTextbox) $realisateurTextbox = New-Object System.Windows.Forms.TextBox $realisateurTextbox.Location = New-Object System.Drawing.Point(120, 70) $realisateurTextbox.Size = New-Object System.Drawing.Size(200, 20) # Ajouter une saisie prédictive pour le réalisateur $realisateurTextbox.AutoCompleteMode = "Suggest" $realisateurTextbox.AutoCompleteSource = "CustomSource" $realisateurs = $data | Select-Object -ExpandProperty REALISATEUR -Unique $autoCompleteCollection = New-Object System.Windows.Forms.AutoCompleteStringCollection $autoCompleteCollection.AddRange($realisateurs) $realisateurTextbox.AutoCompleteCustomSource = $autoCompleteCollection $modifForm.Controls.Add($realisateurTextbox) # Déclarer et initialiser la variable $producteurTextbox $producteurTextbox = New-Object System.Windows.Forms.TextBox $producteurTextbox.Location = New-Object System.Drawing.Point(120, 110) $producteurTextbox.Size = New-Object System.Drawing.Size(200, 20) # Ajouter une saisie prédictive pour la colonne "PRODUCTION" $producteurTextbox.AutoCompleteMode = "Suggest" $producteurTextbox.AutoCompleteSource = "CustomSource" $productions = $data | Select-Object -ExpandProperty PRODUCTION -Unique $autoCompleteCollection = New-Object System.Windows.Forms.AutoCompleteStringCollection $autoCompleteCollection.AddRange($productions) $producteurTextbox.AutoCompleteCustomSource = $autoCompleteCollection $modifForm.Controls.Add($producteurTextbox) $anneeTextbox = New-Object System.Windows.Forms.TextBox $anneeTextbox.Location = New-Object System.Drawing.Point(120, 140) $anneeTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($anneeTextbox) $genreTextbox = New-Object System.Windows.Forms.TextBox $genreTextbox.Location = New-Object System.Drawing.Point(120, 170) $genreTextbox.Size = New-Object System.Drawing.Size(200, 20) # Ajouter une saisie prédictive pour le réalisateur $genreTextbox.AutoCompleteMode = "Suggest" $genreTextbox.AutoCompleteSource = "CustomSource" $genre = $data | Select-Object -ExpandProperty GENRE -Unique $autoCompleteCollection = New-Object System.Windows.Forms.AutoCompleteStringCollection $autoCompleteCollection.AddRange($genre) $genreTextbox.AutoCompleteCustomSource = $autoCompleteCollection $modifForm.Controls.Add($genreTextbox) $paysTextbox = New-Object System.Windows.Forms.TextBox $paysTextbox.Location = New-Object System.Drawing.Point(120, 200) $paysTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($paysTextbox) # Créer des zones de texte pour les nouvelles valeurs $sousTitreTextbox = New-Object System.Windows.Forms.TextBox $sousTitreTextbox.Location = New-Object System.Drawing.Point(120, 230) $sousTitreTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($sousTitreTextbox) $numeroEpisodeTextbox = New-Object System.Windows.Forms.TextBox $numeroEpisodeTextbox.Location = New-Object System.Drawing.Point(120, 260) $numeroEpisodeTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($numeroEpisodeTextbox) $saisonTextbox = New-Object System.Windows.Forms.TextBox $saisonTextbox.Location = New-Object System.Drawing.Point(120, 290) $saisonTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($saisonTextbox) $scenaristeTextbox = New-Object System.Windows.Forms.TextBox $scenaristeTextbox.Location = New-Object System.Drawing.Point(120, 320) $scenaristeTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($scenaristeTextbox) $codeOeuvreTextbox = New-Object System.Windows.Forms.TextBox $codeOeuvreTextbox.Location = New-Object System.Drawing.Point(120, 350) $codeOeuvreTextbox.Size = New-Object System.Drawing.Size(200, 20) $modifForm.Controls.Add($codeOeuvreTextbox) # Créer des labels de texte pour chaque zone de texte $sousTitreLabel = New-Object System.Windows.Forms.Label $sousTitreLabel.Text = "Sous-titre :" $sousTitreLabel.AutoSize = $true $sousTitreLabel.Location = New-Object System.Drawing.Point(10, 235) $modifForm.Controls.Add($sousTitreLabel) $numeroEpisodeLabel = New-Object System.Windows.Forms.Label $numeroEpisodeLabel.Text = "Numéro épisode :" $numeroEpisodeLabel.AutoSize = $true $numeroEpisodeLabel.Location = New-Object System.Drawing.Point(10, 265) $modifForm.Controls.Add($numeroEpisodeLabel) $saisonLabel = New-Object System.Windows.Forms.Label $saisonLabel.Text = "Saison :" $saisonLabel.AutoSize = $true $saisonLabel.Location = New-Object System.Drawing.Point(10, 295) $modifForm.Controls.Add($saisonLabel) $scenaristeLabel = New-Object System.Windows.Forms.Label $scenaristeLabel.Text = "Scénariste :" $scenaristeLabel.AutoSize = $true $scenaristeLabel.Location = New-Object System.Drawing.Point(10, 325) $modifForm.Controls.Add($scenaristeLabel) $codeOeuvreLabel = New-Object System.Windows.Forms.Label $codeOeuvreLabel.Text = "Code oeuvre :" $codeOeuvreLabel.AutoSize = $true $codeOeuvreLabel.Location = New-Object System.Drawing.Point(10, 355) $modifForm.Controls.Add($codeOeuvreLabel) # Créer des labels de texte pour chaque zone de texte $titreLabel = New-Object System.Windows.Forms.Label $titreLabel.Text = "Titre corriger :" $titreLabel.AutoSize = $true $titreLabel.Location = New-Object System.Drawing.Point(10, 45) $modifForm.Controls.Add($titreLabel) $titrefilmLabel = New-Object System.Windows.Forms.Label $titrefilmLabel.Text = "Nom du fichier :" $titrefilmLabel.AutoSize = $true $titrefilmLabel.Location = New-Object System.Drawing.Point(10, 15) $modifForm.Controls.Add($titrefilmLabel) #Durée Label $dureefilmLabel = New-Object System.Windows.Forms.Label $dureefilmLabel.Text = "Durée :" $dureefilmLabel.AutoSize = $true $dureefilmLabel.Location = New-Object System.Drawing.Point(330, 15) $modifForm.Controls.Add($dureefilmLabel) $realisateurLabel = New-Object System.Windows.Forms.Label $realisateurLabel.Text = "Réalisateur :" $realisateurLabel.AutoSize = $true $realisateurLabel.Location = New-Object System.Drawing.Point(10, 75) $modifForm.Controls.Add($realisateurLabel) $producteurLabel = New-Object System.Windows.Forms.Label $producteurLabel.Text = "Producteur :" $producteurLabel.AutoSize = $true $producteurLabel.Location = New-Object System.Drawing.Point(10,115) $modifForm.Controls.Add($producteurLabel) $anneeLabel = New-Object System.Windows.Forms.Label $anneeLabel.Text = "Année :" $anneeLabel.AutoSize = $true $anneeLabel.Location = New-Object System.Drawing.Point(10, 145) $modifForm.Controls.Add($anneeLabel) $genreLabel = New-Object System.Windows.Forms.Label $genreLabel.Text = "Genre :" $genreLabel.AutoSize = $true $genreLabel.Location = New-Object System.Drawing.Point(10, 175) $modifForm.Controls.Add($genreLabel) $paysLabel = New-Object System.Windows.Forms.Label $paysLabel.Text = "Pays de production :" $paysLabel.AutoSize = $true $paysLabel.Location = New-Object System.Drawing.Point(10, 205) $modifForm.Controls.Add($paysLabel) ##DEBUT #Afficher les valeurs existantes dans les zones de texte du formulaire de modification $selection = $listBox.SelectedItem $resultat = Import-Csv ".\auteur.csv" -Delimiter ";" | Where-Object { $_.TITREFILM -eq $selection } if ($resultat) { $titrefilmTextbox.Text = "" $titreTextbox.Text = "" $realisateurTextbox.Text = "" $producteurTextbox.Text = "" $anneeTextbox.Text = "" $genreTextbox.Text = "" $paysTextbox.Text = "" $sousTitreTextbox.Text = "" $numeroEpisodeTextbox.Text = "" $saisonTextbox.Text = "" $scenaristeTextbox.Text = "" $codeOeuvreTextbox.Text = "" $dureefilmTextbox.text = "" $titrefilm = $resultat.TITREFILM $titre = $resultat.TITRECORRIGER $realisateur = $resultat.REALISATEUR $producteur = $resultat.PRODUCTION $annee = $resultat.ANNEEDEPRODUCTION $genre = $resultat.GENRE $sousTitre = $resultat.SOUSTITRE $numeroEpisode = $resultat.NUMEROEPISODE $saison = $resultat.SAISON $scenariste = $resultat.SCENARISTE $codeOeuvre = $resultat.CODEOEUVRE $pays = $resultat.PAYSDEPROD $dureefilm = $resultat.DUREE if (!$sousTitre) { $sousTitre = "O" } if (!$numeroEpisode) { $numeroEpisode = "O" } if (!$saison) { $saison = "O" } if (!$scenariste) { $scenariste = "O" } if (!$codeOeuvre) { $codeOeuvre = "O" } } else { $titrefilm = "" $titre = "" $realisateur = "" $producteur = "" $annee = "" $genre = "" $sousTitre = "O" $numeroEpisode = "O" $saison = "O" $scenariste = "O" $codeOeuvre = "O" } $titrefilmTextbox.text = $titrefilm $dureefilmTextbox.text = $dureefilm $titreTextbox.Text = $titre $realisateurTextbox.Text = $realisateur $producteurTextbox.Text = $producteur $anneeTextbox.Text = $annee $genreTextbox.Text = $genre $paysTextbox.Text = $pays $sousTitreTextbox.Text = $sousTitre $numeroEpisodeTextbox.Text = $numeroEpisode $saisonTextbox.Text = $saison $scenaristeTextbox.Text = $scenariste $codeOeuvreTextbox.Text = $codeOeuvre ## FIN # Ajouter le bouton Play $btnPlay2 = New-Object System.Windows.Forms.Button $btnPlay2.Location = New-Object System.Drawing.Point(230, 380) $btnPlay2.Size = New-Object System.Drawing.Size(100, 45) $btnPlay2.Text = "LIRE LA VIDEO" $btnplay2.Enabled = $true $btnPlay2.Add_Click({ Lecturevideo }) $modifForm.Controls.Add($btnPlay2) # Créer un bouton pour enregistrer les nouvelles valeurs $enregistrerButton = New-Object System.Windows.Forms.Button $enregistrerButton.Location = New-Object System.Drawing.Point(90, 380) $enregistrerButton.Size = New-Object System.Drawing.Size(120, 45) $enregistrerButton.Text = "ENREGISTRER" $modifForm.Controls.Add($enregistrerButton) # Événement pour le clic sur le bouton "Enregistrer" ##DEBUT $enregistrerButton.Add_Click({ # Importez le contenu du fichier CSV d'origine dans une variable $data = Import-Csv ".\auteur.csv" -Delimiter ";" -Encoding Default # Recherchez la ligne correspondant à l'élément sélectionné dans votre liste $selection = $listbox.SelectedItem $row = $data | Where-Object { $_.TITREFILM -eq $selection } # Si une ligne correspondante est trouvée, mettez à jour les valeurs if ($row) { $row.TITREFILM = $titrefilmTextbox.Text $row.TITRECORRIGER = $titreTextbox.Text $row.REALISATEUR = $realisateurTextbox.Text $row.PRODUCTION = $producteurTextbox.Text $row.ANNEEDEPRODUCTION = $anneeTextbox.Text $row.GENRE = $genreTextbox.Text $row.PAYSDEPROD = $paysTextbox.Text $row.SOUSTITRE = $sousTitreTextbox.Text $row.NUMEROEPISODE = $numeroEpisodeTextbox.Text $row.SAISON = $saisonTextbox.Text $row.SCENARISTE = $scenaristeTextbox.Text $row.CODEOEUVRE = $codeOeuvreTextbox.Text $dureeFilmValue = $dureefilmTextbox.Text if ([string]::IsNullOrEmpty($dureeFilmValue)) { # La valeur de la durée est vide, vous pouvez continuer sans vérification $row.DUREE = $dureeFilmValue # Exportez les données mises à jour dans le fichier CSV d'origine $data | Export-Csv ".\auteur.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8 [System.Windows.Forms.MessageBox]::Show("Les modifications ont été enregistrées.", "Enregistrement des modifications", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information) $modifForm.Close() } else { $dureePattern = "^([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$" if ($dureeFilmValue -match $dureePattern) { $row.DUREE = $dureeFilmValue # Exportez les données mises à jour dans le fichier CSV d'origine $data | Export-Csv ".\auteur.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8 [System.Windows.Forms.MessageBox]::Show("Les modifications ont été enregistrées.", "Enregistrement des modifications", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information) $modifForm.Close() } else { # La valeur de la durée n'est pas au bon format, affichez un message d'erreur [System.Windows.Forms.MessageBox]::Show("Le format de la durée doit être hh:mm:ss.", "Erreur de format", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Error) } } } else { # Si aucune ligne correspondante n'est trouvée, affichez un message d'erreur [System.Windows.Forms.MessageBox]::Show("Aucune ligne correspondante trouvée dans le fichier CSV.", "Erreur de modification", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Error) } }) # Créer un bouton pour supprimer la ligne sélectionnée $supprimerButton = New-Object System.Windows.Forms.Button $supprimerButton.Location = New-Object System.Drawing.Point(10, 380) $supprimerButton.Size = New-Object System.Drawing.Size(75, 45) $supprimerButton.Text = "SUPP" $modifForm.Controls.Add($supprimerButton) # Événement pour le clic sur le bouton "Supprimer" <#$supprimerButton.Add_Click({ # Demander une confirmation avant de supprimer l'élément $resultat = [System.Windows.Forms.MessageBox]::Show("Êtes-vous sûr de vouloir supprimer $($resultat.TITREFILM) ?", "Confirmation de suppression", [System.Windows.Forms.MessageBoxButtons]::YesNo, [System.Windows.Forms.MessageBoxIcon]::Warning) if ($resultat -eq [System.Windows.Forms.DialogResult]::Yes) { # Importez le contenu du fichier CSV d'origine dans une variable $data = Import-Csv ".\auteur.csv" -Delimiter ";" -Encoding Default # Recherchez la ligne correspondant à l'élément sélectionné dans votre liste $selection = $listbox.SelectedItem $row = $data | Where-Object { $_.TITREFILM -eq $selection } # Si une ligne correspondante est trouvée, supprimez-la du tableau et exportez les données mises à jour dans le fichier CSV d'origine if ($row) { $data = $data | Where-Object { $_.TITREFILM -ne $selection } $data | Export-Csv ".\auteur.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8 [System.Windows.Forms.MessageBox]::Show("L'élément a été supprimé.", "Suppression de l'élément", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information) $modifForm.Close() } } }) #> $supprimerButton.Add_Click({ # Demander une confirmation avant de supprimer l'élément $resultat = [System.Windows.Forms.MessageBox]::Show("Êtes-vous sûr de vouloir supprimer $($resultat.TITREFILM) ?", "Confirmation de suppression", [System.Windows.Forms.MessageBoxButtons]::YesNo, [System.Windows.Forms.MessageBoxIcon]::Warning) if ($resultat -eq [System.Windows.Forms.DialogResult]::Yes) { # Importez le contenu du fichier CSV d'origine dans une variable $data = Import-Csv ".\auteur.csv" -Delimiter ";" -Encoding UTF8 # Recherchez la ligne correspondant à l'élément sélectionné dans votre liste $selection = $listbox.SelectedItem $row = $data | Where-Object { $_.TITREFILM -eq $selection } # Si une ligne correspondante est trouvée, supprimez-la du tableau et exportez les données mises à jour dans le fichier CSV d'origine if ($row) { $data = $data | Where-Object { $_.TITREFILM -ne $selection } $data | Export-Csv ".\auteur.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8 [System.Windows.Forms.MessageBox]::Show("L'élément a été supprimé.", "Suppression de l'élément", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information) $modifForm.Close() # Mettre à jour la liste des résultats dans la liste box après la suppression de l'élément $resultats = $data | Where-Object { $_.TITREFILM.Normalize([Text.NormalizationForm]::FormC) -like "*$recherche*" } $listbox.Items.Clear() foreach ($resultat in $resultats) { $listbox.Items.Add($resultat.TITREFILM) } } } }) ##FIN # Afficher la fenêtre de formulaire pour la modification des valeurs $modifForm.ShowDialog() | Out-Null }) $DiffusioncertButton.Add_Click({ $global:myVariable = $listbox.SelectedItem # Lancement pour recherche les créer le csv diffusion à partir des logs & ".\Diffusion_csv.ps1" # Lancement de script2.ps1 une fois que script1.ps1 est terminé & ".\Diffusion et Certificat.ps1" }) $nokbutton.Add_Click({ & ".\Diffusion_csv.ps1" # Importer les données des fichiers CSV dans des tableaux $diffusion = @(Import-Csv -Path ".\diffusion.csv" -Encoding UTF8 -Delimiter ";") $auteur = @(Import-Csv -Path ".\auteur.csv" -Encoding UTF8 -Delimiter ";") # Créer un index sur la colonne TITREFILM de auteur $index = @{} foreach ($item in $auteur) { $index[$item.TITREFILM] = $true } # Initialiser le tableau pour les nouveaux enregistrements $newRows = @() # Parcourir les enregistrements de diffusion foreach ($row in $diffusion) { # Vérifier si le Clipname existe dans TITREFILM en utilisant l'index $match = $false if ($index.ContainsKey($row.Clipname)) { $match = $true } # Si le Clipname n'existe pas dans TITREFILM, l'ajouter au tableau de nouveaux enregistrements if (!$match) { # Vérifier si le nouveau film a déjà été ajouté $added = $false foreach ($item in $newRows) { if ($item.TITREFILM -eq $row.Clipname) { $added = $true break } } # Ajouter le nouveau film si ce n'est pas déjà ajouté if (!$added) { $newRow = New-Object PSObject -Property @{ TITREFILM = $row.Clipname } $newRows += $newRow $newRowsCount++ } } } # Ajouter les nouveaux enregistrements au tableau de TITREFILM $auteur += $newRows # Exporter les données mises à jour dans le fichier CSV $auteur | Export-Csv -Path ".\auteur.csv" -NoTypeInformation -Encoding UTF8 -Delimiter ";" # Afficher le nombre de nouveaux enregistrements ajoutés $message = "$($newRows.Count) nouveaux enregistrements ont été ajoutés." [System.Windows.Forms.MessageBox]::Show($message, "Nouveaux enregistrements") $resultatLabel.Text = "$($newRows.Count) NOK trouvés." # Récupérer la ListBox $listBox = $form.Controls.Find("MaListbox", $true)[0] # Vider la ListBox $listBox.Items.Clear() # Ajouter les nouveaux enregistrements à la ListBox foreach ($item in $newRows) { $listBox.Items.Add($item.TITREFILM) $modifierButton.Enabled = $True } }) $doublonButton.Add_Click({ RechercherDoublons }) # Afficher la fenêtre de formulaire pour la recherche de film $form.ShowDialog() | Out-Null