Comparer 2 classeurs , dont 1 fermé

CAPRI_456

XLDnaute Occasionnel
Bien le bonsoir à tous ,

Le vba repris ici colorie automatiquement dans feuille 'Detail' les données si elles sont retrouvées dans la feuille 'ListeKWE'
en conservant cette dernière couleur.

Cela marche parfaitement car, les deux feuilles sont dans le classeur ouvert.

Comment faire alors :
-- si la feuille 'liste KWE' se trouve dans un classeur fermé autre que la feuille 'Détail', mais dans le même répertoire = 1ère difficulté

--- si la liste doit comprendre 90.000 lignes alors que le max est de 65.......par feuille .. je pense créer 45000 lignes sur chaque feuille et donc il faut que la VBA teste successivement les lignes de chaque feuille
= 2ème difficulté

Si vous avez l'un ou l'autre tuyau ?? Merci d'avance pour vos réflexions

Capri_456
 

CAPRI_456

XLDnaute Occasionnel
ah ces 'caractères spéciaux' enfin, les voici mes fichiers avec l'erreur [file name=PAN1TEST.zip size=45519]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PAN1TEST.zip[/file]
 

Pièces jointes

  • PAN1TEST.zip
    44.5 KB · Affichages: 36

MichelXld

XLDnaute Barbatruc
bonjour

le nom d'entête de la colonne A , est incorrect

1. remplace :

Cible = 'SELECT * FROM [Feuil1$] WHERE ' & _
'[HS code]='' & Cells(i, 3) & '' AND ' & _
'[Article]='' & Cells(i, 4) & '''

par

Cible = 'SELECT * FROM [Feuil1$] WHERE ' & _
'[HS Code]='' & Cells(i, 3) & '' AND ' & _
'[Code Art V]='' & Cells(i, 4) & '''


2. dans la cellule A1 du classeur fermé , ce n'est par un V qui etait inscrit mais des slashs et antislashs \\\\\\\\ / .....????



bonne journée
MichelXld

Message édité par: michelxld, à: 27/03/2006 06:10
 

CAPRI_456

XLDnaute Occasionnel
bonsoir le forum, MichelXLD

et moi qui pensais à un pilote ODBC...

Merci Michel ....
la 1ère erreur = entêtes différents , OK
la 2ème , j'aurais pu relire 1000 fois...
certes un petit secret maison, mais comment as tu repéré l'erreur
V (alphabet) et le \\/(formé slash et antislash)
ici c'est visible mais dans mon fichier XLS pas du tout ..

Encore merci..
Grâce à cette étape , ja vais pourvoir poursuivre mon développement
 

CAPRI_456

XLDnaute Occasionnel
bonsoir tous, bonsoir MichelXLD,

le VBA permet de faire une recherche sur la feuille 1 du classeur fermé

Comment réaliser la recherche en cascade sur la feuille 2 qui comprend les mêmes champs que la feuille 1

Suffit-il d'ajouter le code que j'ai repris en rouge
Cible = 'SELECT * FROM [Feuil1$] WHERE ' & _
'[HS code]='' & Cells(i, 3) & '' AND ' & _
'[Article]='' & Cells(i, 4) & '''
Cible = 'SELECT * FROM [Feuil2$] WHERE ' & _
'[HS code]='' & Cells(i, 3) & '' AND ' & _
'[Article]='' & Cells(i, 4) & '''


les fichiers sont joints [file name=PAN2TEST.zip size=47761]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PAN2TEST.zip[/file]
 

Pièces jointes

  • PAN2TEST.zip
    46.6 KB · Affichages: 20

CAPRI_456

XLDnaute Occasionnel
bonsoir LE FORUM, bonsoir MichelXLD,

le VBA dans le fichier permet de faire une recherche (comparaison)entre les ligne d'un classeur ouvert et d'un classeur fermé (feuille1)

Comment réaliser la recherche sur la feuille2 (avec même champs que feuille 1)

Suffit-il d'ajouter le code que j'ai repris en rouge
Cible = 'SELECT * FROM [Feuil1$] WHERE ' & _
'[HS code]='' & Cells(i, 3) & '' AND ' & _
'[Article]='' & Cells(i, 4) & '''
Cible = 'SELECT * FROM [Feuil2$] WHERE ' & _
'[HS code]='' & Cells(i, 3) & '' AND ' & _
'[Article]='' & Cells(i, 4) & '''

les fichiers sont joints [file name=PAN2TEST_20060401002953.zip size=47761]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PAN2TEST_20060401002953.zip[/file]
 

Pièces jointes

  • PAN2TEST_20060401002953.zip
    46.6 KB · Affichages: 38

MichelXld

XLDnaute Barbatruc
bonjour CAPRI_456

la synthaxe que tu utilises ne peut pas fonctionner ainsi . tu dois faire la recherche dans chaque feuille , l'une apres l'autre .

pourquoi les données sont elles dans 2 feuilles différentes ? il serait preferable de tout regrouper sur une meme feuille pour ne pas créer une usine à gaz . si le probleme vient d'un nombre d'enregistrements supérieur au nombre de lignes d'une feuille Excel (65536) ,le passage à une base Access serait peut etre à envisager .


bonne journée
MichelXld
 

CAPRI_456

XLDnaute Occasionnel
Bsoir le Forum,Michel XLD,

merci pour le conseil, mais

--le cl ouvert est utilisé par plusieurs personnes qui doivent exécuter la requête pour vérifier la stratégie de gestion de stock (définie par d'autres)avant de décider d'une action
--le cl fermé (stock) contient lui +- 80000 lignes que les utilisateurs doivent confronter à chaque analyse
donc j'ai du répartir ces ligne sur deux onglets
==== donc il faut comparer +- 40 lignes (cl ouvert)d'abord à 65000(1ere feuille (temps = 1min 25)puis à la deuxième feuille, donc ce temps va augemnter.. Ce n'est pas trop grave vu le résultat intéressant fourni.

==== cependant si l'on peut améliorer et placer les 80000 lignes dans une table access, comment puis je questionner ma base de donnée .MDB (table 1)au départ de mon classeur XLS ? S'agit-il du même code VBA ?

Merci d'avance pour l'un ou l'autre conseil.
Peut-etre cette question a t'elle déjà été posée.

A+
 

CAPRI_456

XLDnaute Occasionnel
Bsoir le Forum,Michel XLD,

J'ai tenté de trouver qq chose qui pourrait m'aider à remplacer le classeur XLS fermé par une table ACCESS dans le fil 'PILOTER UNE BASE ACCESS AU DEPART XLS'
mais....est-il possible d'obtenir le même résultat que celui obtenu précédemment, maiq qui prennait jusq'au deux minutes pour la comparaison
ou peut être en créant dans XLS une base ADOX comme proposée dans ce fil ???

Voir mon précédent message pour le détail

Merci à tous .
 

MichelXld

XLDnaute Barbatruc
bonjour

le principe de fonctionnement reste identique

il faut juste adapter le mode de connection


Fichier = 'C:\\\\\\\\MaBase.mdb'
Set cn = New ADODB.Connection
Cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' & Fichier & ';'


ensuite tu remplaces le nom de la feuille par le nom de la Table Access

Cible = 'SELECT * FROM Table1 WHERE ' & _
'[HS code]='' & Cells(i, 3) & '' AND ' & _
'[Article]='' & Cells(i, 4) & '''


puis le Recordset

Set Rs = New ADODB.Recordset

With Rs
.ActiveConnection = Cn
.Open Cible, , adOpenStatic, adLockOptimistic, adCmdText
End With

If Not Rs.EOF Then
Select Case Rs.Fields(3).Value 'CodeStrategie dans colonne 4
Case 'x'
Range(Cells(i, 3), Cells(i, 4)).Interior.ColorIndex = 3
Case 'y'
Range(Cells(i, 3), Cells(i, 4)).Interior.ColorIndex = 4
Case Else
Range(Cells(i, 3), Cells(i, 4)).Interior.ColorIndex = 15
End Select
End If




bonne journée
MichelXld
 

CAPRI_456

XLDnaute Occasionnel
bsoir le FORUM , Michel XLD

j'ai une erreur de compil en Cn = (affiche objet requis)

Private Sub CommandButton1_Click()
Dim Rs As ADODB.Recordset
Dim Cn As String, Cible As String, Fichier As String
Dim j As Integer, x As Integer, i As Integer

Fichier = ThisWorkbook.Path & '\\HSCode List 08-02-2006.xls'

'parametres pour la connection au classeur fermé
''Cn = 'DRIVER={Microsoft Excel Driver (*.xls)};' & _
'''ReadOnly=1;DBQ=' & Fichier & ';' & 'extended properties=''Excel 8.0;'''

Fichier = 'C:\\BD-catalogue.mdb'
Set Cn = New ADODB.Connection
Cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' & Fichier & ';'
 

MichelXld

XLDnaute Barbatruc
bonjour

tu es en train de confondre les connections aux classeurs Excel et aux bases Access

remplace

Dim Cn As String

par

Dim Cn As ADODB.Connection



supprime les lignes

Fichier = ThisWorkbook.Path & 'HSCode List 08-02-2006.xls'

'parametres pour la connection au classeur fermé
''Cn = 'DRIVER={Microsoft Excel Driver (*.xls)};' & _
'''ReadOnly=1;DBQ=' & Fichier & ';' & 'extended properties=''Excel 8.0;'''




bonne journée
MichelXld

Message édité par: michelxld, à: 07/04/2006 05:26
 

CAPRI_456

XLDnaute Occasionnel
Re:Comparer 2 classeurs XLS , dont 1 fermé

bonsoir le Forum, Michel XLD

La comparaison du contenu d'un classeur XLS avec une table ACCESS MDB (fermée) est plus efficace (rapide) que la comparaison entre deux classeurs XLS dont un fermé.


je vous remercie pour l'aide. Cela fonctionne à Merveille et c'est ultra plus rapide.
De plus la coloration de certains aspects stratégiques au niveau du stock (table MDB)dans le classeur XLS apporte une aide à la décision

encore merci pour votre soutien tout au long du développement

Capri456
 

CAPRI_456

XLDnaute Occasionnel
Re:Comparer 2 classeurs XLS , dont 1 fermé

Bonsoir le forum, bsoir MichelXLD

J'avais crié youppie trop tôt !!

il y a manifestement un problème lors de la comparaison du HS code du tableur XLS avec le HS code de la table MDB

pour les codes qui apparaissent en vert et rouge le Code stratégie de la table mdb s'applique parfaitement.

Par contre, j'ai découvert que cela ne se passe pas ainsi pour les autres bien qu'il y ait ou non un code

--- si je place un espace manuellement entre les deux derniers chiffres dans la table access cela fonctionne

-----si j'utilise le formatage @@@@@@@@ @@ dans les propriétés de la table access cela ne fonctionne pas

A quoi est ce du
comment modifier cela ... manuellement cela est impossible car il faut que j'en modifie 76000,

Auriez-vous une idée , au sein du forum
en vous remerciant par avance


CAPRI456
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 943
Membres
103 679
dernier inscrit
yprivey3