Bonjour,

J'ai un problème sur mon script PowerShell que je ne comprend pas,
j'ai une page "cas2.ps1" qui est un peut le programme principal qui gère un cas d'exception n°2, dans cette page en haut j'ai écris :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Import-Module .\formatNomPrenom.ps1
"formatNomPrenom.ps1" est une page de fonction dont une qui est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
function formatNom([string]$val){
    # Formatage du nom ou du prénom au format AD
    # Ajout au fichier paramètres
    # Importation des modules
    Import-Module .\creationLog.ps1

    # Création de l'objet Excel
    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $false
    $excel.DisplayAlerts = $false

    # Ouverture du fichier paramètres
    Write-Host "Ouverture du fichier parametres" -ForegroundColor Blue
    try{
        $workbook = $excel.Workbooks.Open("C:\Users\ltanne\Desktop\preprod\parametres\feuille.xlsx")
        $worksheet = $workbook.Worksheets.item("Parametres")
        $worksheet.Activate()
        $ouvertParam = $true
        $chaine = "Ouverture du fichier paramètres : OK"
        majLog $chaine
    }catch{
        $ouvertPram = $false
        Write-Host "Le fichier ne s'ouvre pas, veuillez vérifier le nom : " -ForegroundColor Red
        Write-Host "qu'il se trouve bien dans le bon dossier 'parametres'," -ForegroundColor Red
        Write-Host "qu'il n'a pas été déplacer ou supprimer" -ForegroundColor Red
        $chaine = "Impossible d'ouvrir le fichier parametres : fichier formatNomPrenom.ps1"
        majLog $chaine
    }

    # Nombre total de ligne dans le fichier
    $ligneTotal = $worksheet.UsedRange.Rows.count

    # Modification de la chaine
    $colonne = 39
    $ligne = 2

    # Écrit la chaine dans le fichier paramètre
    Write-Host "MAJ PARAMETTRE EN COUR..."
    for($ligne = 2; $ligne -le $ligneTotal; $ligne++){
        if($worksheet.Cells.Item($ligne, $colonne).Value() -eq " "){
            Write-Host $worksheet.Cells.Item($ligne, $colonne).Value()
            $worksheet.Cells.Item($ligne, $colonne) = $nom
            $newLigne = $ligne
        }
    }

    # Recherche par carractère, ceux à remplacé
    Write-Host "RECHERCHE EN COUR..."
    $longueur = $nom.Length
    $colonne = 45
    for($nb = 0; $nb -le $longueur; $nb++){
        if($chaine[$nb] -eq "'"){
            $nom = $nom -replace $nom[$nb], " "
        }
        # Parcour des carractères spéciaux
        for($ligne = 2; $ligne -le $ligneTotal; $ligne++){
            if($worksheet.Cells.Item($ligne, $colonne).Value() -eq $nom[$nb]){
                $nom = $nom -replace $nom[$nb], $worksheet.Cells.Item($ligne, ($colonne + 1)).Value()
                break
            }
        }        
    }
    $nom = $nom.ToUpper()
    Write-Host "Fermeture du fichier paramètre" -ForegroundColor Red
    $workbook.Save()
    $workbook.Close()
    $excel.Quit()

    return $nom
}
J'exécute cette fonction avec le code suivant dans le fichier "cas2.ps1" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Attributon du nom
    $nom = $Salarie.nomRh
    # Ligne et colonne de départ dans le fichier paramètres
    Write-Host "Formatage du nom" -ForegroundColor Red
    $ligne = 2
    $colonne = 39
    $trouve = $false
    for($ligne = 2; $ligne -le $ligneTotal; $ligne++){
        if($worksheet.Cells.Item($ligne, $colonne).Value() -eq $nom){
            $newNom = $worksheet.Cells.Item($ligne, $colonne).Value()
            $trouve = $true
        }
    }
    if($trouve.Equals($false)){
        # Ajout d'un nouveau nom et formatage du nom manuelement
        $newNom = formatNom $nom
    }
    $NewSalarie.nom = $newNom
Quand la fonction est exécuté une première fois ca fonctionne sans problème mais quand elle est exécuté une deuxième fois elle affiche l'erreur suivante :
Nom : Capture.PNG
Affichages : 1072
Taille : 12,7 Ko

Avez-vous une idée ?

Merci d'avance