Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1577 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [XL-2010] Comparaison entre deux cellules

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XL-2010] Comparaison entre deux cellules

n°2238824
LeamCart
Posté le 25-09-2014 à 10:31:34  profilanswer
 

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
mood
Publicité
Posté le 25-09-2014 à 10:31:34  profilanswer
 

n°2238838
Marc L
Posté le 25-09-2014 à 12:54:37  profilanswer
 

 
           Bonjour, bonjour !
 
           StrOk est une variable, pas un objet, donc pas de propriété Value associée ‼   A retirer donc …
 

n°2238846
LeamCart
Posté le 25-09-2014 à 14:23:09  profilanswer
 

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

n°2238847
MaybeEijOr​Not
but someone at least
Posté le 25-09-2014 à 14:43:40  profilanswer
 

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

n°2238849
LeamCart
Posté le 25-09-2014 à 14:53:29  profilanswer
 

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

n°2238850
rufo
Pas me confondre avec Lycos!
Posté le 25-09-2014 à 14:54:04  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2238851
LeamCart
Posté le 25-09-2014 à 14:57:30  profilanswer
 

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

n°2238858
rufo
Pas me confondre avec Lycos!
Posté le 25-09-2014 à 15:30:30  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2238862
LeamCart
Posté le 25-09-2014 à 15:40:50  profilanswer
 

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
n°2238863
MaybeEijOr​Not
but someone at least
Posté le 25-09-2014 à 15:45:31  profilanswer
 

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

mood
Publicité
Posté le 25-09-2014 à 15:45:31  profilanswer
 

n°2238867
LeamCart
Posté le 25-09-2014 à 15:52:38  profilanswer
 

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
n°2238880
rufo
Pas me confondre avec Lycos!
Posté le 25-09-2014 à 16:11:27  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2238884
MaybeEijOr​Not
but someone at least
Posté le 25-09-2014 à 16:16:36  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [XL-2010] Comparaison entre deux cellules

 

Sujets relatifs
[RESOLU] [VBA] - EXCEL 2010 - Optimisation de codeHELP pour comparaison de cellules VBA
Copie de cellules sous conditions.[EXCEL 2010] Formule résultat cellule X en fonction de Y
je voudrais fusionner les cellules du tableau de mon emploi du tempsScript shell pour comparaison de 2 fichier et récupération du résultat
Petit aide sur le logiciel Visual Basic 2010acces 2010 comment rechercher un mot dans des mém
Visual C++ 2010 Express et SDL 
Plus de sujets relatifs à : [XL-2010] Comparaison entre deux cellules


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR