[Déplacé .net --> VBA] comparer colonne d un workbook avec 2 autres workbook

ktran Messages postés 4 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010 - 9 janv. 2010 à 18:07
ktran Messages postés 4 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010 - 11 janv. 2010 à 14:57
Bonjour,

j ai ecris un code mais ca bug.

la situation est : j ai un workbook source nomme "testforward", colonne G et a partir de G4, j ai des noms.

la macro doit verifier pour chaque cellule de G4 jusqu a la premiere cellule vide du workbook "testforward" ou se trouve ce nom ; soit dans le workbook "danhmuc8020" ou dans le workbook "danhmuc", et ensuite dans un msgbox specifier dans quel workbook se trouve le nom.

voici le code ecrit :

Sub compare()
myway = ActiveWorkbook.Path & ""
Dim cp As Integer
Dim K As Integer
Dim Danhmuc8020 As Workbook
Set Danhmuc8020 = GetObject(myway & "\Danhmuc8020.xls")
Dim DANHMUCCAMCO As Workbook
Set DANHMUCCAMCO = GetObject(myway & "\DANHMUCCAMCO.xls")
For K = 4 To Sheets("FW").[G65000].End(4).Row
cp = 0
cp = Application.Match(Cells(K, 7), Danhmuc8020.Sheets("Hanmucgiaingan").[B3:B16], 0)
If cp = 0 Then
MsgBox "ok"
Else
cp = Application.Match(Cells(K, 7), DDANHMUCCAMCO.Sheets("HOSE" & "HASTC").[B4:B], 0)
If cp = Cells(4, K) Then
MsgBox "DANHMUCCAMCO"
K = K + 1
End If
Next
End Sub

merci d avance

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 janv. 2010 à 19:12
Salut
Au lieu de répéter sans cesse la même question, fais plutôt attention à :
- Choisir la bonne catégorie de code : Ca ressemble à du VBA, pas à du .Net
- Si tu colles du code, utilises la colorisation syntaxique 3ème icone à partir de la droite plus facile à lire

Quand tu dis "ça bugue", dis nous plutôt si tu as un message d'erreur, lequel, sur quelle ligne.
Il faut être le plus précis possible.[list]
[*] Tu termines la définition de ta variable myway par un \
Pourquoi en rajoutes-tu un dans tes GetObject ?
[*] For K = 4 To Sheets("FW").[G65000].End(4).Row
Tu t'adresses à quel classeur avec Sheets("FW") ?
[*] Sheets("HOSE" & "HASTC") revient à écrire Sheets("HOSEHASTC")
Est-ce correct ? As-tu bien une feuille nommée comme ça ?
[*] A mon avis, [B4:B] n'est pas une syntaxe de Range correcte/list
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ktran Messages postés 4 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010
10 janv. 2010 à 06:24
excuse moi Jack si je me trompe de section.

for K = 4: c est le workbook source "testforward" ou il y a les donnees.
de la, la macro va verifier dans les 2 autres workbook s'il le nom sy trouve (le nom ne peut pas se trouver dans les 2 workbooks, c est soit l un soit l autre).

Sheets("HOSE" & "HASTC") revient à écrire Sheets("HOSEHASTC")
non, dans le workbook "DANHMUCCAMCO", il y a 2 sheets a verifier "HOSE" et "HASTC"

le message d erreur intervient a la ligne : cp = application.match
"type mismatch"

j espere avoir ete le plus precis possible.

merci encore

cordialement
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 janv. 2010 à 14:51
"c est le workbook source "testforward"" Ok, mais mieux vaudrait lui préciser

Si tu as deux feuilles dans ton classeur, il faut faire deux tests, tu ne peux pas mettre les nomes des feuilles à la suite.

Danhmuc8020.Sheets("Hanmucgiaingan").[B3:B16]
s'écrit surement (pas testé)
Danhmuc8020.Sheets("Hanmucgiaingan").Range("B3:B16")

"erreur intervient a la ligne : cp = application.match" Ok, mais laquelle des deux ?
0
ktran Messages postés 4 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010
10 janv. 2010 à 15:11
ok j ai corrige

l erreur survient des la 1ere condition :

cp = Application.Match(Cells(K, 7), Danhmuc8020.Sheets("Hanmucgiaingan").[B3:B16], 0)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 janv. 2010 à 12:48
Et avec Range ?
Si tu n'essayes pas les solutions qu'on te propose ...
0
ktran Messages postés 4 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010
11 janv. 2010 à 14:57
j ai egalement essaye avec range mais toujours la meme erreur.

cependant, j ai trouve entre-temps d ou venait le probleme.
c etait en fait le if cp = 0 que j ai remplace par if not Iserror et la nickel

merci pour vos conseils
0
Rejoignez-nous