[XL-2010] Comparaison entre deux cellules

Comparaison entre deux cellules [XL-2010] - VB/VBA/VBS - Programmation

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
Reply

Marsh Posté le 25-09-2014 à 10:31:34   

Reply

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 …
 

Reply

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

Reply

Marsh Posté le 25-09-2014 à 14:43:40    

Qu'y a t-il dans cette dite cellule?

Reply

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..

Reply

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 ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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..

Reply

Marsh Posté le 25-09-2014 à 15:30:30    

Au fait, pourquoi StrOk(4) :??: Ca devrait pas être StrOk ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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


Message édité par LeamCart le 25-09-2014 à 15:44:28
Reply

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ù?

Reply

Marsh Posté le 25-09-2014 à 15:45:31   

Reply

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!

 


Message édité par LeamCart le 25-09-2014 à 16:12:52
Reply

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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. :/


Message édité par MaybeEijOrNot le 25-09-2014 à 16:19:27
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed