[VBA][excel]conditions ???

bonjour,

j'ai un souci (forcement sinon je poserait pas de question) et comme je suis un peu neuneu dans ce domaine j'implore votre aide..

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

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


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

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 :

    ' passage au fichier destination
    serveur = UCase(serveur)
    ' rechercher la bonne colone pour le serveur
    For x = 3 To 33
        If Cells(1, x).Value = serveur Then
            colone = x
            Exit For
            ' pas la peine de finir les 33 boucles si on a deja
            ' le numero de colone au bout de 5 boucles !
        End If
    Next x
    If serveur = "UGADM3" Then
        colone = 28
    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...

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. As tu essayé avec LOOKUP?

    Si tu as ligne1: 1|2|3|4|5
    Ligne2: TATA|TITI|TOTO|UGADM3|TUTU
    Cellule Z10 = UGADM3

    Lookup(Z10;B1:B5;A1:A5) = 4 (colonne en question)
    Donc "UGADM3" = "UGADM3"

    Rien n'est plus dangereux qu'une idée quand on a 
    qu'une idée
      :-)
    1. lookup ne peux pas marcher...
      j'ai rien compris...

      deplus je peux pas avoir de ligne 1 telle que tu l'a definie...

      je ne peux rien ecrire/afficher d'autre que le tableau que le client m'impose..
      1. ;-)

        Envoie moi ton xls !! Ca ira mille fois plus vite, si tu es pressé...

        ;-)

        Wild and Free
        1. ok je t'envoie un mail

          merci
          1. ;-)

            Le temps que je te renvoie tout ça nickel, compte demain matin ;-)

            Pas trop long ?

            ;-)

            Wild and Free
        2. merci c'est deja sympa de regarder....

          alors fais comme tu peux...

          merci encore
          1. ;-)

            Sauf que, j'ai aussi outlook d'ouvert, et que j'ai encore rien reçu, et que là, bon, c'est mon heure où, heu, mes coussins, je les entends d'ici !! DOM !! ;-)))

            Il te suffit de cliquer sur mon nom pour avoir mon mail... Par contre, là, je vais aller faire dodo, ce qui repousee au moins a ce soir, ton xls tout prêt....

            ;-)

            Rhaa, kaisse qu'on f'rait pas pour aider les gens, hein !! ;-)

            Là, je coupe (12h25 de l'heure galactique)... Je reprends ce soir, tard... ;-)

            Wild and Free
        3. C'était un exemple (Loockup)...
          Si tu vas voir dans la doc, tu veras comment l'utiliser dans ton cas.

          Je reprends l'exemple (modifié et documenté):

          Ligne1: TATA|TITI|TOTO|UGADM3|TUTU
          --> Donc A1 = "TATA", A2 = "TITI" etc...

          Lookup("UGADM3";B1:B5;(1,2,3,4,5)) = 4 (colonne dans laquelle se trouve "UGADM3")
          Explication:
          Lookup(Texte, Vecteur, Résultat)
          Texte : le string que tu cherche (Serveur dans ton cas)
          Vecteur : Ligne dans laquelle la valeur Texte doit être cherchée
          Résultat : le résultat renvoyé par Lookup.
          Lookup("TATA";B1:B5;(1,2,3,4,5)) = 1
          Lookup("TITI";B1:B5;(1,2,3,4,5)) = 2
          Lookup("TOT";B1:B5;(1,2,3,4,5)) = 3
          ...

          Je ne vois pas bien pourquoi tu ne pourrais pas utiliser cette fonction?

          Rien n'est plus dangereux qu'une idée quand on a 
          qu'une idée
            :-)