Question
[Résolu] Comparaison colonnes Excel
- Hicham Madini
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 3 mois #28304
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:Comparaison colonnes Excel
Ah non mais je l'ai réglé 
[code:1]# fonction pour recuperer les données de la premiere colonne du fichier excel
Function Get-WorkbookData($Workbook, $Row) {
$Workbook.Activate()
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text # A pour la premiere colonne
while ($Logiciel.Length) {
$obj = @{
\"Logiciel\" = $Logiciel;
}
New-Object –Typename PSObject –Prop $obj
$Row++
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text -replace '(^\s+|\s+$)','' -replace '\s+',' '
}
}
# fonction pour colorer les données récupérer dans $LogicielsToMark
Function Mark-Logiciel($Workbook, $LogicielsToMark) {
$Workbook.Activate()
$Row = 1
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text
while ($Logiciel.Length) {
if ($LogicielToMark -contains $Logiciel) {
$Workbook.ActiveSheet.Range(\"A\" + $Row).Cells.Font.ColorIndex = 3
}
$Row++
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text
}
}
Add-Type -AssemblyName \"Microsoft.Office.Interop.Excel\" | out-null
# Ouvrir Excel
$ExcelApplication = New-Object -ComObject \"Excel.Application\"
$ExcelApplication.Visible = $true
# ouvrir les deux fichiers à comparer
$ExcelWorkbookOld = $ExcelApplication.Workbooks.Open(\"DESTINATION2.xlsx\"«»)
$ExcelWorkbookNew = $ExcelApplication.Workbooks.Open(\"SOURCE3.xlsx\"«»)
# recupérer les données des colonnes à comparer
$OldData = Get-WorkbookData -Workbook $ExcelWorkbookOld 2
$NewData = Get-WorkbookData -Workbook $ExcelWorkbookNew 1
# comparer les données récuperer
$Comparison = Compare-Object -ReferenceObject $NewData -DifferenceObject $OldData -Property \"Logiciel\" -IncludeEqual:$false
#array pour récupérer les différences trouver
$LogicielToMark = @()
$Comparison | %{
if ($_.SideIndicator -eq \"<=\"«») {
$LogicielToMark += $_.Logiciel
}
}
# colorer en rouge les différences récupérer dans $LogicielToMark
Mark-Logiciel -Workbook $ExcelWorkbookNew -LogicielToMark $LogicielToMark
#$ExcelApplication.Quit()[/code:1]<br><br>Message édité par: hichammadd, à: 22/02/19 11:02
[code:1]# fonction pour recuperer les données de la premiere colonne du fichier excel
Function Get-WorkbookData($Workbook, $Row) {
$Workbook.Activate()
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text # A pour la premiere colonne
while ($Logiciel.Length) {
$obj = @{
\"Logiciel\" = $Logiciel;
}
New-Object –Typename PSObject –Prop $obj
$Row++
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text -replace '(^\s+|\s+$)','' -replace '\s+',' '
}
}
# fonction pour colorer les données récupérer dans $LogicielsToMark
Function Mark-Logiciel($Workbook, $LogicielsToMark) {
$Workbook.Activate()
$Row = 1
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text
while ($Logiciel.Length) {
if ($LogicielToMark -contains $Logiciel) {
$Workbook.ActiveSheet.Range(\"A\" + $Row).Cells.Font.ColorIndex = 3
}
$Row++
$Logiciel = $Workbook.ActiveSheet.Range(\"A\" + $Row).Text
}
}
Add-Type -AssemblyName \"Microsoft.Office.Interop.Excel\" | out-null
# Ouvrir Excel
$ExcelApplication = New-Object -ComObject \"Excel.Application\"
$ExcelApplication.Visible = $true
# ouvrir les deux fichiers à comparer
$ExcelWorkbookOld = $ExcelApplication.Workbooks.Open(\"DESTINATION2.xlsx\"«»)
$ExcelWorkbookNew = $ExcelApplication.Workbooks.Open(\"SOURCE3.xlsx\"«»)
# recupérer les données des colonnes à comparer
$OldData = Get-WorkbookData -Workbook $ExcelWorkbookOld 2
$NewData = Get-WorkbookData -Workbook $ExcelWorkbookNew 1
# comparer les données récuperer
$Comparison = Compare-Object -ReferenceObject $NewData -DifferenceObject $OldData -Property \"Logiciel\" -IncludeEqual:$false
#array pour récupérer les différences trouver
$LogicielToMark = @()
$Comparison | %{
if ($_.SideIndicator -eq \"<=\"«») {
$LogicielToMark += $_.Logiciel
}
}
# colorer en rouge les différences récupérer dans $LogicielToMark
Mark-Logiciel -Workbook $ExcelWorkbookNew -LogicielToMark $LogicielToMark
#$ExcelApplication.Quit()[/code:1]<br><br>Message édité par: hichammadd, à: 22/02/19 11:02
Connexion ou Créer un compte pour participer à la conversation.
- Atou
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 7 ans 3 mois #28305
par Atou
Réponse de Atou sur le sujet Re:Comparaison colonnes Excel
Ah ouais la merci t'es vraiment le boss 
J'aurais surement d'autres soucis, je te répondrais une nouvelle fois si je bloque mais je pense que le plus gros du travail est finit.
Vraiment merci beaucoup
J'aurais surement d'autres soucis, je te répondrais une nouvelle fois si je bloque mais je pense que le plus gros du travail est finit.
Vraiment merci beaucoup
Connexion ou Créer un compte pour participer à la conversation.
- Atou
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 7 ans 3 mois #28308
par Atou
Réponse de Atou sur le sujet Re:Comparaison colonnes Excel
Bon on arrête plus avec les blocages ... 
On me demande maintenant d'ajouter le contenu du fichier SOURCE (mois de janvier 2019) avec exactement la même présentation que pour les autres mois qui sont dans le fichier DESTINATION ... Je pensais remplacer la fonction qui colore le texte par une fonction qui permet de faire un copier-coller. Sachant qu'il faut que j'ajoute également les logiciels manquant.
Autant te dire que c'est un peu mission impossible pour moi.
Je compte un peu sur ton talent en powershell pour me venir en aide.
Merci d'avance
On me demande maintenant d'ajouter le contenu du fichier SOURCE (mois de janvier 2019) avec exactement la même présentation que pour les autres mois qui sont dans le fichier DESTINATION ... Je pensais remplacer la fonction qui colore le texte par une fonction qui permet de faire un copier-coller. Sachant qu'il faut que j'ajoute également les logiciels manquant.
Autant te dire que c'est un peu mission impossible pour moi.
Je compte un peu sur ton talent en powershell pour me venir en aide.
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- Atou
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 7 ans 3 mois #28309
par Atou
Réponse de Atou sur le sujet Re:Comparaison colonnes Excel
J'ai déjà un script qui permet de faire du copier-coller mais il est un peu bancale ...
[code:1]
$range1=\"B2:B82\"
$range2=\"V3:V83\"
$file1 = 'E:\2K19\Scriptexcel\SOURCE.xlsx'
$file2 = 'E:\2K19\Scriptexcel\DESTINATION.xlsx'
$xl = new-object -c excel.application
$xl.displayAlerts = $false
$wb1 = $xl.workbooks.open($file1, $null, $true)
$wb2 = $xl.workbooks.open($file2)
$ws1 = $wb1.WorkSheets.item(1)
$ws1.activate()
$range = $ws1.Range($range1).Copy()
$ws2 = $wb2.Worksheets.item(1)
$ws2.activate()
$x=$ws2.Range($range2).Select()
$ws2.Paste()
$wb2.Save()
[/code:1]
[code:1]
$range1=\"B2:B82\"
$range2=\"V3:V83\"
$file1 = 'E:\2K19\Scriptexcel\SOURCE.xlsx'
$file2 = 'E:\2K19\Scriptexcel\DESTINATION.xlsx'
$xl = new-object -c excel.application
$xl.displayAlerts = $false
$wb1 = $xl.workbooks.open($file1, $null, $true)
$wb2 = $xl.workbooks.open($file2)
$ws1 = $wb1.WorkSheets.item(1)
$ws1.activate()
$range = $ws1.Range($range1).Copy()
$ws2 = $wb2.Worksheets.item(1)
$ws2.activate()
$x=$ws2.Range($range2).Select()
$ws2.Paste()
$wb2.Save()
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Hicham Madini
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 3 mois #28310
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:Comparaison colonnes Excel
Ah oui c'est un trés bon exercice pour moi, je vais essayé mais ce soir ok?
il faut savoir que j'ai commencé à apprendre Powershell, il y a ca. 5 semaines, mais j'ai un but!!
Mon but c'est de devenir un initié chez powershell-scripting
il faut savoir que j'ai commencé à apprendre Powershell, il y a ca. 5 semaines, mais j'ai un but!!
Mon but c'est de devenir un initié chez powershell-scripting
Connexion ou Créer un compte pour participer à la conversation.
- Hicham Madini
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 98
- Remerciements reçus 0
il y a 7 ans 3 mois #28313
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:Comparaison colonnes Excel
T‘as un fichier peut etre afin de verifier?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.042 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Comparaison colonnes Excel