Question
[Résolu] Comparaison colonnes Excel
- 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 #28288
par Atou
[Résolu] Comparaison colonnes Excel a été créé par Atou
Je repost une demande pour mes problème d'excel afin d'être plus précis dans ma demande, je m'explique, j'ai deux fichiers, le premier qui regroupe une liste d'application avec leur nom, leur temps d'utilisation et le nombre de fois qu'ils ont été lancé pour tous mois, le second a exactement la même chose sauf que celui-ci concerne seulement le mois de janvier.
Mon but est de comparer la colonne du premier fichier ou il y a le nom des logiciel avec la colonne du second fichier ou il y a également des logicels.
Fichier 1 (mois de Janvier) : www.noelshack.com/2019-08-4-1550760126-zav1.png
Fichier 2 (Global) : www.noelshack.com/2019-08-4-1550760129-zav2.png
Ne pas s'inquiéter des version qui sont dans la colonne du nom dans le fichier 1.
Merci d'avance.
Atou45<br><br>Message édité par: Arnaud, à: 22/02/19 10:07
Mon but est de comparer la colonne du premier fichier ou il y a le nom des logiciel avec la colonne du second fichier ou il y a également des logicels.
Fichier 1 (mois de Janvier) : www.noelshack.com/2019-08-4-1550760126-zav1.png
Fichier 2 (Global) : www.noelshack.com/2019-08-4-1550760129-zav2.png
Ne pas s'inquiéter des version qui sont dans la colonne du nom dans le fichier 1.
Merci d'avance.
Atou45<br><br>Message édité par: Arnaud, à: 22/02/19 10:07
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 #28292
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:Comparaison colonnes Excel
slt,
à adapter
[code:1]# fonction pour recuperer les données de la premiere colonne du fichier excel
Function Get-WorkbookData($Workbook) {
$Workbook.Activate()
$Row = 1
$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(\"test1.xlsx\")
$ExcelWorkbookNew = $ExcelApplication.Workbooks.Open(\"test2.xlsx\")
# recupérer les données des colonnes à comparer
$OldData = Get-WorkbookData -Workbook $ExcelWorkbookOld
$NewData = Get-WorkbookData -Workbook $ExcelWorkbookNew
# 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 07:54
à adapter
[code:1]# fonction pour recuperer les données de la premiere colonne du fichier excel
Function Get-WorkbookData($Workbook) {
$Workbook.Activate()
$Row = 1
$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(\"test1.xlsx\")
$ExcelWorkbookNew = $ExcelApplication.Workbooks.Open(\"test2.xlsx\")
# recupérer les données des colonnes à comparer
$OldData = Get-WorkbookData -Workbook $ExcelWorkbookOld
$NewData = Get-WorkbookData -Workbook $ExcelWorkbookNew
# 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 07:54
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 #28293
par Atou
Réponse de Atou sur le sujet Re:Comparaison colonnes Excel
Salut, merci de ton aide mais j'ai juste un petit soucis, est-ce que tu pourrais commenter un peu ton code parce que je suis encore un débutant en powershell et j'aimerais comprendre ce que je fais.
Merci d'avance
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 #28294
par Atou
Réponse de Atou sur le sujet Re:Comparaison colonnes Excel
Tout compte fais ton script fonctionne presque parfaitement 
Le seul soucis c'est qu'il met en rouge toute la liste de logiciels malgré qu'ils aient exactement le même nom.
merci d'avance
<br><br>Message édité par: Atou45, à: 22/02/19 07:29
Le seul soucis c'est qu'il met en rouge toute la liste de logiciels malgré qu'ils aient exactement le même nom.
merci d'avance
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 #28295
par Hicham Madini
Réponse de Hicham Madini sur le sujet Re:Comparaison colonnes Excel
non le script compare la premiere colonne comme tu voulais.
pour les commentaires je vais faire ca.
Je suis aussi debutant et je me bagarre avec Powershell pour pouvoir resoudre un autre probléme
pour les commentaires je vais faire ca.
Je suis aussi debutant et je me bagarre avec Powershell pour pouvoir resoudre un autre probléme
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 #28296
par Atou
Réponse de Atou sur le sujet Re:Comparaison colonnes Excel
Je confirme également que ton script compare bel et bien les deux colonnes voulue mais je ne comprends pas pourquoi il me met toute ma colonne en rouge alors que certains logiciels on exactement le même nom 
Peut être parce que la liste de logiciels du premier fichier n'est pas dans le même ordre que dans le deuxième ?
Merci d'avance
Peut être parce que la liste de logiciels du premier fichier n'est pas dans le même ordre que dans le deuxième ?
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Comparaison colonnes Excel