Probleme macro Objet

Snoop

XLDnaute Occasionnel
Bonjour tout le monde et le forum,

j'ai un pti soucis avec une partie de mon code, il me fait une erreur Objet mais je ne sais pas pourquoi.

Le code consiste à vérifier une valeur dans une table, si la valeur n'existe pas --> j'alimente la table sinon je passe à la valeur suivante...

La table me permet de ne pas faire la macro si j'ai un doublons...

mais j'ai une erreur au niveau de la ligne Set cc.....

merci pour votre aide !!!


Sub ecriture()
Dim i As Long, j As Long
Dim tabl As Variant
Dim cc As Object
i = 6
q = 1


While Range("b" & i) <> ""

Set cc = tabl.Find(Range("b" & i), LookIn:=xlValues)

If cc Is Nothing Then
Redim preserve tabl(1,1 to q)
tabl(,1q) = Range("b" & i).Value
q = q + 1
End if
i = i + 1
Wend
.........
 

skoobi

XLDnaute Barbatruc
Re : Probleme macro Objet

Bonjour,

la variable "tabl" doit être un objet "Range" et non un tableau:
Dim tabl as Range
que tu dois définir au préalable avant:
Set cc = tabl.Find(Range("b" & i), LookIn:=xlValues)
du genre:
Set tabl = Range("A1:B10")

Edit: ouppsss, collision, bonjour JM :)
 

Snoop

XLDnaute Occasionnel
Re : Probleme macro Objet

Alors cela doit etre le lundi mais je le cerveau ramoli !!

si je fais :

Dim tabl()
Dim cc As Object
Dim q as long, is as long
q = 1
i = 1


While Range("b" & i) <> ""

set cc = tabl.Find(Range("b" & i).Value, LookIn:=xlValues)

If cc Is Nothing Then
ReDim Preserve tabl(1, 1 To q)
tabl(1, q) = Range("b" & i).Value
q = q + 1

'suite macro
End if
i = i + 1
Wend

---> erreur qualificateur - pour Tabl - Incorrect sur la ligne Set cc=tabl.find
 

skoobi

XLDnaute Barbatruc
Re : Probleme macro Objet

Re,

Bon, tu dois déclarer un tableau plus une plage:

Dim tabl()
Dim plage as range
.....
.....

et attribuer une plage de cellule à la variable plage car la propriété "Find" ne fonctionne pas pour un tableau.

Set plage = Range("A1:B10") par exemple

ensuite le reste de la macro mais en modifiant:
set cc = plage.Find(Range("b" & i).Value, LookIn:=xlValues)
 

Snoop

XLDnaute Occasionnel
Re : Probleme macro Objet

Ok, donc en faite je n'ai pas besoin de créer une table mais de lui faire chercher sur un range, que j'alimente durant la macro.

Mais je voulais justement que cela soit transparent (sans passer par un range mais en alimentant une table qui est supprimé une fois la macro faite)....

Avec quoi je peux remplacer le Find pour lui faire une recherche sur une table ? -> car j'ai envie de comprendre jusqu'au bout :p

:D
 

skoobi

XLDnaute Barbatruc
Re : Probleme macro Objet

Pour faire une recherche dans une table, il faut procéder ainsi,

For n = 1 to Ubound(Tableau, 1)
If Range("b" & i).Value = Tableau(i,1) Then
.........
...........
........
End If

Le problème c'est que avec ton code actuel, la table est vide.....
Au fait, la 1ere dimension d'un tableau correspond à la ligne et la 2eme à la colonne.
 

Snoop

XLDnaute Occasionnel
Re : Probleme macro Objet

Merci skoobi,

Donc pas de find mais une recherche via une boucle....

Je vais voire comment l'adapter, merci encore en tout cas !!

:D

IL est vide juste lors de la première recherche..; ensuite il s'alimente à chaque tour :eek:)

Tks
 

Discussions similaires

Réponses
12
Affichages
287
Réponses
2
Affichages
293

Statistiques des forums

Discussions
312 413
Messages
2 088 200
Membres
103 762
dernier inscrit
rouazali