Comparaison entre deux cellules [XL-2010] - VB/VBA/VBS - Programmation
Marsh Posté le 25-09-2014 à 12:54:37
Bonjour, bonjour !
StrOk est une variable, pas un objet, donc pas de propriété Value associée ‼ A retirer donc …
Marsh Posté le 25-09-2014 à 14:23:09
Effectivement cela à débloquer l'erreur qui m'étais indiqué ! Cependant j'en ai une autre (la lois des suites..) qui est une incompatibilité de type entre StrOk et donc ma cellule stockée sur le deuxième classeur..
En mettant un espion sur StrOk je vois que c'est une string, et par contre Workbooks[...] un Object/sheets..
Comment faire pour récupérer cette valeur en string ?
Cart
Marsh Posté le 25-09-2014 à 14:53:29
Effectivement ce sera plus simple pour vous de le savoir..
Je stocke des noms d'images comme :
0255-1014349
fleu_jolie
Pouet.pouet
01
02
La variable StrOk cherche à correspondre avec l'une des 5000 images stockées dans la base image ayant donc des noms complétement aléatoires..
Marsh Posté le 25-09-2014 à 14:54:04
Y'aurait pas des espaces ou caractères non imprimables en début ou fin de l'une des valeurs qui fausserait la comparaison ? Faire un trim() sur les 2 valeurs pourrait aider, peut-être ?
Marsh Posté le 25-09-2014 à 14:57:30
Comme ceci : If (Trim(StrOk(4)) = Trim(Application.Workbooks(BaseImg(5)).Sheets(1).Cells(LigneImage, 1).Value)) Then ?
Si oui, cela ne fonctionne pas, j'ai toujours une incompatibilité de types..
Marsh Posté le 25-09-2014 à 15:30:30
Au fait, pourquoi StrOk(4) Ca devrait pas être StrOk ?
Marsh Posté le 25-09-2014 à 15:40:50
Cela est dû à un Split, je récupère seulement la dernière partie afin de pouvoir matcher entre les deux classeurs.
For ligne = 2 To 5
Workbooks(Exp(5)).Activate
StrOk = Split(Cells(ligne, 13).Value, "/" )
Workbooks(BaseImg(5)).Activate
For LigneImage = 1 To 8228
If (StrOk(4) = Application.Workbooks(BaseImg(5)).Sheets(1).Cells(LigneImage, 1).Value) Then
Workbooks(Exp(5)).Activate
Cells(ligne, 13).Value = Cells(ligne, 13).Value & Workbooks(BaseImg(5)).Sheets(1).Cells(LigneImage, 2)
Exit For
End If
Next LigneImage
Next ligne
Marsh Posté le 25-09-2014 à 15:45:31
Donc théoriquement dans "Application.Workbooks(BaseImg(5)).Sheets(1).Cells(LigneImage, 1).Value" il y a du texte et non une image? Parce que là l'erreur indique que tu aurais un objet et à part une image ou un contrôle je ne vois pas ce qu'il pourrait y avoir comme objet.
Le Str0k(4) vient du split je présume, de toute façon d'après les dires Str0ck(4) serait une string et donc correcte.
Tes données viennent d'où?
Marsh Posté le 25-09-2014 à 15:52:38
Ce n'est que du texte oui.
C'est pourquoi je ne comprend pas l'incompatibilité je vise sur une cellule contenant du texte..
Effectivement le StrOk(4) vient du Split et est considéré comme string donc lui ne pose pas de soucis..
Ce sont des noms d'images de mon serveur que j'ai inséré dans Excel.
Merci du temps que vous m'accordez.
Cart
EDIT : Je viens de découvrir le SCHMILBLICK ! Tout ça était dû à un des premiers tests que j'avais fais.. aucune image ne peut être manquante du coup elles sont obligées de matcher. Cependant pour un test lointains j'avais mis un mauvais nom de visuel justement pour ça..
Excusez moi de vous avoir fait perdre votre temps... Merci encore pour votre patience et l'aide ! Sans vous je n'aurai pas autant fouiné et je n'aurai certainement pas vu cette erreur..
Très bonne journée à vous!
Marsh Posté le 25-09-2014 à 16:11:27
A la place de .Value, essayes .Text
Vue le split sur le "/", j'en déduit que ses cellules contiennent des chemins d'accès à des fichiers de type image. Attention, si ces chemins sont des urls, y'a un risque que la cellule contiennent un objet hyperlink d'où les pbs de comparaison.
Marsh Posté le 25-09-2014 à 16:16:36
Comment ont-ils été insérés?
L'erreur apparaît bien pour cette ligne "If (StrOk(4) = Application.Workbooks(BaseImg(5)).Sheets(1).Cells(LigneImage, 1).Value) Then" ?
Autrement tu peux tester le type de variable d'une de tes cellules incriminées pour voir.
EDIT : faudrait que je pense à rafraichir mes pages quand je reviens à mon bureau.
Marsh Posté le 25-09-2014 à 10:31:34
Bonjour,
je suis depuis un moment bloqué sur une condition, où je ne comprend pas l'erreur...
Je souhaite comparer deux cellules mais sur deux classeurs différents, voici le code réalisé pour cela :
StrOk = Split(Cells(ligne, 13).Value, "/" )
If (StrOk(4).Value = Workbooks(BaseImg(5)).Sheets("Feuille1" ).Cells(LigneImage, 1).Value) Then
Cells(ligne, 13).Value = Cells(ligne, 13).Value & Workbooks(BaseImg(5)).Sheets("Feuille1" ).Cells(LigneImage, 2)
End If
J'ai ce message d'erreur pour ma condition IF : Objet requis.
Je viens de débuter le vba et je m'acharne sur cette erreur depuis un moment..
Merci par avance de l'aide que vous allez m'apporter.
Cart
Message édité par LeamCart le 25-09-2014 à 16:06:44