IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Un if qui fonctionne à l'envers oO


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut Un if qui fonctionne à l'envers oO
    Bonjour

    -Je cherche une colonne qui a pour valeur "505"
    -une fois trouvé je parcours cette colonne a partir de la 3 eme ligne
    -si la valeur correspond à la valeur de la première colonne de ma worksheet7
    -alors je stock dans une autre feuille à la colonne M.. la valeur de la deuxième colonne de ma worksheet7.

    J'ai testé les valeurs de mon if et elles sont bien égale, malgré ça n'execute pas l'instruction à l'intérieur de celle ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      Set cel = Worksheets(3).Range("A1:CA1").Find(505, LookIn:=xlValues)
        nombreLigneFich = Worksheets(7).Cells(Cells.Rows.Count, 2).End(xlUp).Row
     
        For compteur = 3 To nombreLigne
            For cmpt = 2 To nombreLigneFich
                If Worksheets(3).Cells(compteur, cel.Column).Value = Worksheets(7).Cells(cmpt, 1).Value Then
                    Worksheets(2).Range("M" & compteur).Value = Worksheets(7).Range("B" & cmpt).Value
                End If
            Next cmpt
        Next compteur
    Avez vous une idée pour résoudre ce problème ?

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Problème de précision, essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If abs(Worksheets(3).Cells(compteur, cel.Column).Value - Worksheets(7).Cells(cmpt, 1).Value)<0.0001 Then' à choisir la précision

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 115
    Par défaut
    Là, je viens de changer le code, celui-ci a l'aire de fonctionner sauf quand il tombe sur une cellule vide où là ça plante...

    Ce que je comprends pas c'est qu'ils ne devrait pas passer dans le if si la cellule est vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        For compteur = 3 To nombreLigne
            Search = Worksheets(3).Cells(compteur, cel.Column).Value
            If Not IsEmpty(Search) Then
                Worksheets(2).Range("M" & compteur).Value = Worksheets(7).Range("A2:A" & nombreLigneFich).Find(Search, LookIn:=xlValues).Offset(0, 1).Value
            End If
        Next compteur
    L'erreur apparait au niveau de la ligne worksheets (les valeurs sont bien inséré dans la colonne jusqu'à ce que le programme tombe sur une valeur vide)

    L'erreur :
    Erreur d'execution "91":

    Variable objet ou variable de bloc With non définie
    Edit : en fait c'est lorsque que ca ne trouve pas la valeur que ca plante ><

    (Ta solution fonctionne, merci beaucoup je vais pouvoir aller dormir )

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu dois passer par tester l'existence de la valeur, exemple à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim c as range
    set c=Worksheets(7).Range("A2:A" & nombreLigneFich).Find(Search, LookIn:=xlValues)
    if not c is nothing then Worksheets(2).Range("M" & compteur).Value = c.Offset(0, 1).Value
    set c=nothing

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Applet+Threads] Pause et resume qui fonctionne pas
    Par MinsK dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 29/11/2005, 18h39
  2. Fonction JS qui fonctionne avec Mozilla mais pas avec IE.
    Par etiennegaloup dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 13h58
  3. Requery afterMaj qui fonctionne que si je repète la saisie ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 7
    Dernier message: 26/09/2005, 23h12
  4. code qui fonctionne en local et pas sur le net
    Par vraipolite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/08/2005, 10h10
  5. une requete qui fonctionne aux 3/4...
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 22h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo