Comparaison de 2 classeurs avec condition

Julie1

XLDnaute Nouveau
Bonjour à toutes et à tous,

j'ai essayé de chercher une solution sur le forum + le net mais je n'ai rien trouver peut être que cela n'est pas possible!!
voici mon problème : j'ai deux classeurs : classeur 1 et classeur 2
dans le classeur 1 j'ai 3 colonnes, et ca sur une trentaine de feuille : une colonne référence, une colonne nom et une colonne note
dans le classeur 2 j'ai une seule colonne référence (sur une seule feuille).

Je voudrais dans un troisième classeur créer une macro (?) qui me compare la colonne référence du classeur 2 à la colonne référence du classeur 1.
si la référence est dans le classeur 1 et dans le classeur 2 et que dans la colonne note la valeur est différente de 1 ou de -1 alors copié le nom se reportant à la référence et l'intitulé de l'onglet sinon ne rien faire. j'ajouterai ensuite un bouton pour lancer la macro (ça je sais faire, c'est le seul truc d'ailleurs que je sache faire en macro :eek:).

j'ai essayer de faire la macro seul (sachant que je n'ai aucune notion de vba seulement un peu d'enregistrement :s)

je sais qu'il faut ouvrir les deux classeurs et donc :

sub macro1()
workbooks open filename "c:...classeur1"
workbooks open filename "c:...classeur2"


Merci beaucoup pour votre aide. je vous joins un petit exemple dans lequel le fichier classeur 1 ne comporte que 2 onglet mais il faudrait pouvoir le faire sur un fichier à plus de 30 feuilles
 

Pièces jointes

  • classeur1.xls
    29.5 KB · Affichages: 44
  • Classeur2.xlsx
    9.7 KB · Affichages: 39
  • classeur1.xls
    29.5 KB · Affichages: 47
  • Classeur2.xlsx
    9.7 KB · Affichages: 46
  • classeur1.xls
    29.5 KB · Affichages: 51
  • Classeur2.xlsx
    9.7 KB · Affichages: 46

Gareth

XLDnaute Impliqué
Re : Comparaison de 2 classeurs avec condition

Bonsoir,

Une interpretation dans le fichier Classeur3.xlsm
Les fichiers doivent etre dans le meme dossier pour le test.
Le bouton est offert :)
 

Pièces jointes

  • Julie.zip
    31.4 KB · Affichages: 38
  • Julie.zip
    31.4 KB · Affichages: 35
  • Julie.zip
    31.4 KB · Affichages: 34

Julie1

XLDnaute Nouveau
Re : Comparaison de 2 classeurs avec condition

Merci beaucoup ca marche à merveille :)

Cependant une toute petite question même si tout est très bien expliqué dans le module. Lorsque les référence sont recherché dans le classeur 1 pour les croisés à ceux du classeur 2, la recherche se fait comment? Je veux dire est ce que c'est une recherche lign epar ligne ou est-ce qu'il spécifié dans le code qu'il faut chercher dans la colonne D? je ne sais pas si je suis clair, ce que je veux savoir c'est si jamais je change la colonne référence et que je la place dans la colonne J par exemple est ce que le code fonctionnera toujours ou dois-je le changer?

Merci
 

Gareth

XLDnaute Impliqué
Re : Comparaison de 2 classeurs avec condition

Bonjour,

Ca cherche dans la colonne D.
Tu peux le modifier dans le code.
Mais je vais modifier le code pour que la recherche se fasse automatiquement.
Si ça cherche le mot "REFERENCE" quelle que soit la colonne ça va ?
 

Julie1

XLDnaute Nouveau
Re : Comparaison de 2 classeurs avec condition

ah oui c'est une bonne idée surtout que je vais rajouter plein d'autres éléments dans les feuilles excel donc si il recherche d'abord "réference" pour commencer ça comparaison ca serait parfait:) merci beaucoup!

Sinon je souhaiterais me former seul à VBA est-ce possible? ou impossible?
 

Gareth

XLDnaute Impliqué
Re : Comparaison de 2 classeurs avec condition

Bonsoir,

Ci-joint une version modifiée qui cherche "REFERENCE" dans les onglets.
Si pas de "REFERENCE" dans l'onglet -> pas de traitement (attention à l'orthographe).
"REFERENCE" peut etre dans n'importe quelle colonne.

Pour se former seul, tout est possible ...
Motivation, projet, support, aide, ... les Forum sont des bons moyens pour apprendre et comprendre.
 

Pièces jointes

  • Julie.zip
    34.9 KB · Affichages: 29
  • Julie.zip
    34.9 KB · Affichages: 34
  • Julie.zip
    34.9 KB · Affichages: 31

Julie1

XLDnaute Nouveau
Re : Comparaison de 2 classeurs avec condition

Bonjour,

Je reviens de nouveau sur ce code. Je souhaiterai modifié le chemin des classeurs 1 et classeur 2.

En faite dans mon dossier il y a différent classeur 1 qui sont nommés par mois : donc j'ai un classeur par mois. Je souhaiterais que le classeur le plus récent soit ouvert donc pour aujourd'hui ce serait le classeur Septembre par exemple (le classeur octobre n'existant pas encore).
Je voudrais également mettre le véritable chemin du classeur 2 qui ne se trouve pas dans le même dossier.

Je pensais modifié le début du code ainsi :

Sub Test()
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path
Set Class1 = Workbooks.Open(Filename:=Chemin & "Format(Date(),"mm" ).xls") '
Set Class2 = Workbooks.Open(Filename:=C:....Classeur2.xlsx")
ThisWorkbook.Sheets("Feuil1").Cells.Clear

Est ce juste?
 

Gareth

XLDnaute Impliqué
Re : Comparaison de 2 classeurs avec condition

Bonjour,


Chemin = ThisWorkbook.Path 'Là le classeur est dans le meme dossier ...
Tu peux entrer le chemin comme ceci : Chemin="C:\toto\titi\"

Set Class1 = Workbooks.Open(Filename:=Chemin & Format(Date, "mmm") & ".xls")
Voici la syntaxe pour un fichier nommé Sept.xls (pour Septembre.xls => Format(Date, "mmmm") ).
& est l'opérateur de concaténation. Ce qui varie est entre 2 & et ce qui est constant (textes) entre "" (ici le "mmm" correspond à un argument de fonction)
 

Julie1

XLDnaute Nouveau
Re : Comparaison de 2 classeurs avec condition

euuh.

Mon classeur 1 est dans le même dossier que le classeur 3 alors que le classeur 2 ne l'est pas donc le chemin est différent.
Si je met Chemin="C:\toto\titi\ cela ouvrira le classeur 2 mais pas le classeur 1 vu que le chemin est différent.

pour l'histoire du fichier nommé par mois. avec ce code donc
Set Class1 = Workbooks.Open(Filename:=Chemin & Format(Date, "mmm") & ".xls")
cela suffira pour ouvrir automatiquement le fichier portant le nom de mois le plus récent (si j'ai 5 fichier : janvier.xls , février.xls, octobre.xls et novembre. xls ce sera bien le fichier novembre.xls qui sera ouvert?)

Merci beaucoup pour ton aide
 

Julie1

XLDnaute Nouveau
Re : Comparaison de 2 classeurs avec condition

En faite je ne veux pas écrire de chemin pour le classeur 1 (je voudrais utiliser ThisWorkbook.Path) mais je veux écrire un chemin précis pour le classeur 2
 
Dernière édition:

Gareth

XLDnaute Impliqué
Re : Comparaison de 2 classeurs avec condition

Bonsoir,

Set Class1 = Workbooks.Open(Filename:=Chemin & Format(Date, "mmm") & ".xls") , ça ne va pas pour un fichier dont le nom est le mois écrit en toute lettre.
Format(Date, "mm") => 10
Format(Date, "mmm") => Oct
Format(Date, "mmmm") => Octobre

Pour les chemin, il te suffit de rajouter des variables.
Chemin1=ThisWorkbook.Path
Chemin2="C:\toto\titi\"
 
Dernière édition:

Julie1

XLDnaute Nouveau
Re : Comparaison de 2 classeurs avec condition

Bonsoir,

j'ai testé avec Set Class1 = Workbooks.Open(Filename:=Chemin & Format(Date, "mmm") & ".xls") mais ça ne fonctionne pas j'ai l'erreur d'excustion '1004' suivante :
c:\users\...\desktop\testoctobre.xls' introuvable
je ne comprends pas.
1/ normale qu'il ne le trouve pas je n'ai pas encore de fichier octobre qui existe seulement un septembre.
2/ même si je nomme mon fichier octobre ça ne fonctionne pas.
je ne veux pas qu'il ouvre le fichier correspondant au mois en cours mais le fichier donc le mois est le plus récent. (je ne sais pas si je suis clair :s)

peut être qu'il faut créer une variable qui détecte tout les noms de fichier correspondant à des mois (qui sont dans le dossier) puis qui sélectionne celui dont le mois est le plus "grand"...
 

Gareth

XLDnaute Impliqué
Re : Comparaison de 2 classeurs avec condition

Re,

Il manque un "\" entre test et octobre.
A la fin de Chemin = il faut en mettre un.
=> Chemin1=ThisWorkbook.Path&"\"
=>Chemin2="C:\toto\titi\"

Il faut que le fichier existe, ça c'est sur. Il faudra donc que tu testes d'une façon ou d'une autre.
Pour ouvrir le fichier du mois precedent.
=> Set Class1 = Workbooks.Open(Filename:=Chemin & Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mmmm") & ".xls")
 

Julie1

XLDnaute Nouveau
Re : Comparaison de 2 classeurs avec condition

alors j'ai mis

Set Class1 = Workbooks.Open(Filename:=Chemin1 & Format("\" & Date, "mmm") & ".xls")

ca marche pas vraiment : ca me dit que le fichier c:\users\...\desktop\test\19/10/2012.xls est introuvable. déja on a le \ au bonne endroit mais en faite ca cherche un fichier nommé à la date d'aujourd'hui, c'est pas ce que je recherche...

ps : avec Set Class1 = Workbooks.Open(Filename:=Chemin & Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mmmm") & ".xls")

ca fait pareil sauf que c'est 19/09/2012 ce qui est normale
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 445
Membres
103 213
dernier inscrit
Poupoule