C# excel

Signaler
Messages postés
11
Date d'inscription
jeudi 23 octobre 2008
Statut
Membre
Dernière intervention
18 mars 2010
-
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
-
Boujour,


j'ai crée de Hashtable  avec comme  code, pour l'une d'entre elles :


Hashtable indiceColumns2 =
new
Hashtable();



Type
type =

typeof
(

LibColumn
);




foreach
(

String
info

in



Enum
.GetNames(type))



{



Range
range = (

Range
)workSheet2.Cells.Find(info, missing, missing, missing, missing,

XlSearchDirection
.xlNext, missing, missing, missing);




if
(range ==

null
) StopApplication(

"colonne "
+ info +

" inexistante dans le fichier de base."
);



indiceColumns2[info] = range.Column;





}




IndiceColumns correspond à l'indice de quatre nom de colonnes dans deux classeurs. Je veux à l'aide de celui-ci comparer les lignes. C'est-à-dire voir si l'une des valeurs d'une colonne est présente dans l'autre classeur dans la colonne du même nom.

merci d'avance, bonne journée.


 

1 réponse

Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
Salut,

D'après ce que je comprends tu dois d'abord exécuter le même code sur l'autre feuille pour mettre les indices dans une 2e HashTable.

Après,
foreach (object colName in indiceColumns2 )
{

if (!
ContainsIdenticalData(indiceColumns1[colName]
, indiceColumns2[colName]
)
{
//des données sont dans colonne 1 mais pas 2
}
}

private bool ContainsIdenticalData(int indCol1, int indCol2)
{
//parcours toutes les lignes du classeur 1 pour la colonne d'indice 1
//pour chaque cellule, regarde si ca valeur est dans la colonne d'indice indCol2 dans le 2e classeur
(tu peux utiliser range.Find, ou juste utiliser l'index si les données sont censées être sur la même ligne dans les 2 classeurs)
}

Après, tu dois sans doute vérifier si des données sont dans la 2e feuille mais pas dans la 1ere. Il ya sans doute un meilleur moyen de vérifier que mon truc.