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 :

probleme avec test if


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut probleme avec test if
    bonjour a tous

    J'ai un petit probleme pour definir mais if

    je vous montre mon code et apres je vous dit en francais se que je cherche a faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
        With ActiveSheet
            For i = 1 To 10
                probleme = ""
                If .Cells(i, "A") = "" Or .Cells(i, "B") = "" Then
                    If .Cells(i, "A") = "" Then probleme = "Pas de nom de personne"
                    If .Cells(i, "B") = "" Then
                        If probleme = "" Then probleme = "Pas de prenom de personne"
                        Else
                            probleme = probleme & " , Pas de prenom de personne"
                        End If
                    End If         
     
                Cells(i, 5) = probleme
     
            Next i
        End With
    pour simplifié la fase de test, j'ai simplifier a A et B pour les test mais en réaliter se sera A B E F G H
    moi se que je souhaiter c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    si colonne A ou B vide alors
       si A vide alor probleme = "pas de nom"
       fin si
       si B vide alor
          si probleme vide alor probleme ="pas de prenom"
          sinon
             probleme=probleme & ", pas de prenom"
          fin si
       fin si
       colone E = probleme
    sinon
       traitement a faire pour les ligne avec tous les champ obligatoire remplit
    fin si
    donc dans ma colone E par exempli si
    la colonne A vide mais B rempli, E = pas de nom
    la colonne A rempli mais B vide, E = pas de prenom
    la colonne A vide et B vide,E = pas de nom, pas de prenom

    mais avec mon code pour l'instan j'obtient :
    la colonne A vide mais B rempli, E = pas de nom, pas de prenom
    la colonne A rempli mais B vide, E = pas de prenom
    la colonne A vide et B vide,E = pas de nom

    je ne compren pas pourquoi

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    probleme resolut

    ma s'intaxe n'été pas correct

    merci quand meme

    pour se que sa pourrait intéraisser, je donne la bonne sintaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        With ActiveSheet
            For i = 1 To 10
                 probleme = ""
                 If .Cells(i, "A") = "" Or .Cells(i, "B") = "" Then
                    If .Cells(i, "A") = "" Then
                        probleme = "Pas de nom de personne"
                    End If
                    If .Cells(i, "B") = "" Then
                        If probleme = "" Then
                            probleme = "Pas de prenom de personne"
                        Else
                            probleme = probleme & " , Pas de prenom de personne"
                        End If
                    End If
                End If
     
     
                Cells(i, 5) = probleme
     
            Next i
        End With
    il faut revenir a la ligne apres un then pour que le traitement puisse séffectuer comme il faut et que l'on puisse metre un end if a la fait de notre traitement

    voila bonne journée a tous

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    ne crois-tu pas que ceci serait plus léger ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     With ActiveSheet
      For i = 1 To 10
        probleme = "": et = "": manque = ""
        If .Cells(i, "A") = "" Then probleme = "nom": et = " et "
        If .Cells(i, "B") = "" Then probleme = probleme & et & " prénom"
        If probleme <> "" Then manque = " manquant(s)"
        Cells(i, 5) = probleme & manque
      Next
      End With

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    Ton code a l'aire éffectivement plus claire que le mien

    mais par contre je pense qu'il est moin precis

    dit moi si je me trompe mais
    si il manque que le prenom, probleme & manque = prenom manquant
    sil manque le prenom et le nom,probleme & manque = nom et prenom manquant

    jusque la tres bien

    mais sil manque que le nom, probleme & manque = nom et manquant

    ici sa couince, le "et" n'a pas de raison d'etre

    apres j'ai pe etre mal compris ton code car il y a plein de chose que je ne connais pas dans les ligne que tu viens de donner

    je debute dans se language et je n'ai que les tuto d'internet comme cour et se forum pour posé des questions donc mais connaissence sont encore tres limite

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    non !
    je viens de le tester ===>> si seul le nom mangue ===>> donne bien "nom manquant(s), sans ajouter le "et" !
    Tu as dû mal recopier ou modifier l'ordre (important) des lignes de code !

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    ton code est bien

    cependant j'éprouve une sertaine dificulter a gérer le "et"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                If .Cells(i, "A") = "" Or .Cells(i, "B") = "" Or .Cells(i, "E") = "" Or .Cells(i, "F") = "" Or .Cells(i, "G") = "" Or .Cells(i, "H") = "" Then
                    If .Cells(i, "A") = "" Then probleme = "nom (personne)": et = " et "
                    If .Cells(i, "B") = "" Then probleme & et & "prénom": et = " et "
                    If .Cells(i, "E") = "" Then probleme & et & "nom (voie)": et = " et "
                    If .Cells(i, "F") = "" Then probleme & et & "code postal": et = " et "
                    If .Cells(i, "G") = "" Then probleme & et & "commune": et = " et "
                    If .Cells(i, "H") = "" Then probleme & et & "N° de tel": et = " et "
     
    	        manque = " manquant(s)"
                    Cells(i, "j") = probleme & manque
                Else
    mais avec ce code si je trouve une cellule vide en A et G, je me retrouve avec plein de "et" entre nom et commune

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    - le code que tu montres n'est pas le mien
    - son mécanisme est par ailleurs modifié par rapport au mien
    - il montre que tu veux traiter maintenant au delà de ce que tu demandais au départ

    Ma suggestion : tu arrêtes définitivement ta demande et la redéfinis sur ces bases complètes et arrêtées. La solution exacte te sera alors donnée

  8. #8
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    Bonjour babaothe

    en réaliter si tu regarde mon premier post entre le code VBA et le code "francais"

    il y a une petite phrase :
    pour simplifié la fase de test, j'ai simplifier a A et B pour les test mais en réaliter se sera A B E F G H

    C'est peut etre pas tres francais, mais pour moi sa voulez dire que pour l'instant je chercher des cellule vide dans A et B pour metre en place le mecanisme puis une foi que sa marche, je cherche les cellule vide sur A,B,E,F,G,H
    mais a se moment la, je me rend compte que ton code et assé dificile a modifier pour ladapter sur autent de colonne

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    Ouais,
    je ferais alors dans un tel cas appel à ma sagesse et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    With ActiveSheet
       For i = 1 To 10
          manque = ""
          If .Cells(i, "A") = "" Then manque = " - nom (personne)"
          If .Cells(i, "B") = "" Then manque = manque & " - prénom"
          If .Cells(i, "E") = "" Then manque = manque & " - nom (voie)"
          If .Cells(i, "F") = "" Then manque = manque & " - code postal"
          If .Cells(i, "G") = "" Then manque = manque & " - commune"
          If .Cells(i, "H") = "" Then manque = manque & " - N° de tel"
          If manque <> "" Then manque = "manquant(s) : " & Trim(Mid(manque, 3))
          Cells(i, "j") = manque
       Next
     End With
    Et j'ose à peine te dire que je me lancerais peut-être dans un autre exercice, avec un array et une 2ème boucle (sur les colonnes), pour n'exprimer qu'un seul If au lieu de 6 .
    Mais restons-en là .

    EDIT :
    Et( si tu préfères des "et" à la place des tirets, voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    With ActiveSheet
        For i = 1 To 10
          manque = ""
          If .Cells(i, "A") = "" Then manque = " et nom (personne)"
          If .Cells(i, "B") = "" Then manque = manque & " et prénom"
          If .Cells(i, "E") = "" Then manque = manque & " et nom (voie)"
          If .Cells(i, "F") = "" Then manque = manque & " et code postal"
          If .Cells(i, "G") = "" Then manque = manque & " et commune"
          If .Cells(i, "H") = "" Then manque = manque & " et N° de tel"
          If manque <> "" Then manque = "manquant(s) : " & Trim(Mid(manque, 4))
          Cells(i, "j") = manque
        Next
      End With

Discussions similaires

  1. probleme avec les test avec mvn install
    Par chady dans le forum Maven
    Réponses: 2
    Dernier message: 21/10/2010, 12h01
  2. probleme avec Test & Performance Tools Platform Project
    Par hamster. dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 29/07/2008, 09h11
  3. Probleme performance test disponibilité SGBD avec Timer
    Par oulahoup dans le forum Windows Forms
    Réponses: 7
    Dernier message: 24/06/2008, 22h17
  4. probleme avec les test de SDL
    Par Jérémy Lefevre dans le forum SDL
    Réponses: 2
    Dernier message: 08/11/2007, 13h30
  5. [PHP-JS] Probleme de test avec des variables
    Par bodysplash007 dans le forum Langage
    Réponses: 1
    Dernier message: 02/05/2007, 17h39

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