[EXCEL][VBA] condition sautée ?

condition sautée ? [EXCEL][VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 14-01-2004 à 08:56:58    

bonjour, :hello:  
 
j'ai un souci (forcement sinon je poserait pas de question  :ange: ) et comme je suis un peu neuneu dans ce domaine j'implore votre aide.. :sweat:  
 
j'ai un tableau dont la ligne 1 est du style :

...|TOTO|TITI|TUTU|FOO|UGADM3|BAR|TATA|TETE|...


 
dans une fonction j'utilise ce code  
 

Code :
  1. serveur = UCase(serveur)
  2.     ' rechercher la bonne colone pour le serveur
  3.     For x = 3 To 33
  4.         If Cells(1, x).Value = serveur Then
  5.             colone = x
  6.             Exit For
  7.             ' pas la peine de finir les 33 boucles si on a deja
  8.             ' le numero de colone au bout de 5 boucles !
  9.         End If
  10.     Next x


 
 :non: certains vont surement dire que ma case ligne 1 contient un caractere bidon et bien non je le presice de suite j'ai reverifié et re-fait verifier 2 ou 3 fois à des personnes differentes deja... :non:  
 
 
hors pour la colone 28 c'est à dire que :

x=28 cells(1,x).value = serveur = "UGADM3"


le retour est que colone="", bien sur c'est la seule colone à échouer...
 
Plus grave encore :
-hier suite à énervement à ce sujet j'ai ajouter au code un correctif tel que :

Code :
  1. ' passage au fichier destination
  2.     serveur = UCase(serveur)
  3.     ' rechercher la bonne colone pour le serveur
  4.     For x = 3 To 33
  5.         If Cells(1, x).Value = serveur Then
  6.             colone = x
  7.             Exit For
  8.             ' pas la peine de finir les 33 boucles si on a deja
  9.             ' le numero de colone au bout de 5 boucles !
  10.         End If
  11.     Next x
  12.     If serveur = "UGADM3" Then
  13.         colone = 28
  14.     End If


bien sur ceci fonctionnait.  
j'ouvre ce matin le fichier, relance le fichier et hop  
non seulement le premier ifn'as pas executé pour ce cas
à savoir que donc pour excel

"UGADM3"!="UGADM3

ce qui mon problème original et en plus le second ifqui sert de correctif à cela n'a pas été lui non plus executé (en tout cas pas ce qui est entre le if et le end if.
 
voila ce que j'ai dejà fait comme tests à ce sujet :
 

  • utiliser plusieurs machines (w2k office w2k, w2k office xp, xp office XP, xp office w2k) = meme problemes
  • ajouter dans le code des affichages de MSGBOX pour controler les valeurs au moment du bug = affichage de "UGADM3"!="UGADM3" ce qui est abherant...excel ne sait pas comparer deux valeurs ?
  • réecrire entierement à la main (pas de copier coller) le meme code dans un fichier nouveau sur une machine independante du reseau configurée pour l'occasion ! (au cas ou ce serrait du à une mauvaise installation ou un virus). resultat meme bug
  • faire relire le code par 3 personnes differentes  


 
bref je ne comprend pas tout semble bon mais pourtant ce bug persiste et signe...  :(  
 
 
PLEASE HELP......
conseillez moi, dites moi si j'ai fait une boulette quelque part, ou utilisé une mauvaise methode, ou koi  :??:  
 
PS: l'idée de base pour etre clair est de balayer la ligne 1 pour selectionner le n° de colone à integrer dans la variable colone tout simplement si j'ose dite...
 
voilà le bug sur lequel je bute depuis lundi quand même...


Message édité par francoisp le 14-01-2004 à 09:10:51

---------------
If everything else failed then read the instructions
Reply

Marsh Posté le 14-01-2004 à 08:56:58   

Reply

Marsh Posté le 14-01-2004 à 13:35:17    

Essaie :
 
If UCase(Trim(Cstr(Cells(1, x).Value))) = UCase(Trim(Cstr(serveur))) Then
 
Si ça marche toujours pas, je te suis pour élever des chèvres dans le Larzac :D

Reply

Marsh Posté le 14-01-2004 à 13:38:21    

le trim c'est bon, mangez en ! :D

Reply

Marsh Posté le 14-01-2004 à 13:52:08    

heu....
tu veux mappy ou viamichelin comme carte pour aller dans le larzac ?
 
 
UGADM3
1/12
2/12
3/12
4/12
5/1
6/1
7/1
8/1
9/1
10/12
ss
12/1
13/11  <-- meme probleme tjrs pas passer le cas (on devrait y voir 13/1 et en debug mode on a effectivement et comme tjrs les valeurs attendues mais le if ne s'execute pas bien que la condition soit remplie....
14/12
15/12
16/12
17/12
18/12
19/12
off
21/12
22/12
23/12
24/12
25/12
off
27/11
28/12
29/12
30/12
off
 
merci quand meme l'idée était bonne....
 


---------------
If everything else failed then read the instructions
Reply

Marsh Posté le 14-01-2004 à 13:56:32    

Essaie .Value2 ou chais plus quoi

Reply

Marsh Posté le 14-01-2004 à 13:59:35    

non plus...
 
ouinnn je comprend rien... pkoi y marche pas  


---------------
If everything else failed then read the instructions
Reply

Marsh Posté le 14-01-2004 à 14:13:18    

Code :
  1. ' rechercher la bonne colone pour le serveur
  2.    For x = 3 To 33
  3.        TmpValue = Cells(1, x).Value
  4.        If UCase(Trim(Cstr(TmpValue))) = UCase(Trim(Cstr(serveur))) Then
  5.            colone = x
  6.            Exit For
  7.            ' pas la peine de finir les 33 boucles si on a deja
  8.            ' le numero de colone au bout de 5 boucles !
  9.        End If
  10.    Next x

 
 
on sait jamais  [:spamafote]  
 

Reply

Marsh Posté le 14-01-2004 à 14:17:45    

helàs non.... meme simptomes pour cette colone  
il ne passe pas par la ligne
colone=x bien que le if soit OK d'apres les espions du debugger...
 


---------------
If everything else failed then read the instructions
Reply

Marsh Posté le 20-01-2004 à 06:17:17    

et tu n'aurais par hasard une colonne cachee ????

Reply

Marsh Posté le 20-01-2004 à 17:11:12    

non pas de colonnes cachée  
j'ai essayé des trucs comme changer la colone de place avec une autre...
etc...
 
 
et le phenomene est aleatoire car ce matin je l'ai lancé et paf ca marche....
hier matin ca marchait pas...
et j'y ai pas touché entre temps...
je la relance tous les matins de toute façon puisque pour toute colone qui fonctionne ca me fait gagner du temps ...


---------------
If everything else failed then read the instructions
Reply

Sujets relatifs:

Leave a Replay

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