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 :

problème avec if, recherche non explicite


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut problème avec if, recherche non explicite
    bonjour tout le monde!

    Voilà mon problème:
    Le principe de mon fichier : Par un userfom l'utilisateur peut rentrer les caractéristiques primaires d'un nouveau projet, qui se range tout seul dans un tableau récapitulatif, selon certains critères. des caractéristiques secondaires (nom, adresse, téléphone...) doivent être ajoutées à celles entrée manuellement selon ces critères
    ainsi je défini deux variables String :
    "Département" et "Organisme"

    Mon problème c'est que la liste des éléments pouvant être "organisme" est ouverte.C'est à dire que pour la mise en service de mon fichier, il y a un certain nombre d'organismes, mais l'utilisateur peut en rentrer d'autres (par un second Userform, qui ne pose pas de problèmes...).

    Voici mon code:

    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
    23
    24
    25
    26
    27
    28
    With Sheets("Liste des organismes")
            If Organisme = "DIR SO" Then
            .Range("D69 : H69").Copy
            Sheets("Liste projets").Range("A65535").End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlValues
                Application.CutCopyMode = False
            End If
     
     
            If Organisme = "Conseil Général" Then
            For i = 7 To 34
                If .Range("C" & i).Value = Département Then
                    .Range("D" & i & ":H" & i).Copy
                    Sheets("Liste projets").Range("A65535").End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlValues
                    Application.CutCopyMode = False
                End If
            Next i
            End If
     
     
            For n = 76 To 200
                If .Range("C" & n).Value = Sheets("champs pour listes").Range("A1").Value Then
                    .Range("D" & n & ":H" & n).Copy
                    Sheets("Liste projets").Range("A65535").End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlValues
                    Application.CutCopyMode = False
                End If
            Next n
     
    End With
    Les deux premiers if fonctionnent car ils font appel à un élément ou un élément d'une liste finie.
    Pour le troisième, dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("champs pour listes").Range("A1").Value
    j'essaie de faire appel à un élément rentré par le userform, il est affiché dans la cellule A1 onglet "champs pour listes"...

    si quelqu'un peut me dire ce qu'il ne va pas ou une autre façon de procédé...Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    tu devrais utiliser select case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select case organisme
     case "conseil général"
       ton code ici
    case "dir so"
      ton code ici
    case else
      ton code ici
    end select
    de cette façon, tu prens en compte toutes les possibilités

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    OK je vais essayer ça...
    merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    ça sera plus propre si j'utilise select case, mais je pense que ça ne me change pas mon problème : je peux prendre toutes les possibilités pas une possibilité qui n'est pas encore rentrée? je me trompe?

    en gros il me faudrait quelque chose qui soit l'équivalent de :

    "Variable" = . Range("A1").value, qui apparemment ne marche pas...

  5. #5
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Citation Envoyé par beebe Voir le message
    ....

    "Variable" = . Range("A1").value, qui apparemment ne marche pas...
    je ne comprends pas bien ce que tu ve dire si c'est par exemple récupérer le contenue d'une cellule dans une variable string tu peu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim stYa as string
    stYA = Thisworkbook.sheets("Feuil1").range("A1").value
    si tu ne précise pas le classeur le .range concerne le classeur actif et pour ne pas répeter le nom de la feuille par exemple tu peu utiliser l'instruction with :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim stYA as string 
    with sheets("feuil1")
      'Pour toutes les variables entre with et en with qui commence par un .  
      ' VB prend en compte le prefixe sheets("feuil1")
       stYA = .range("A1").value
     
    end with

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    voilà les lignes de codes qui me posent problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sheets("champs pour listes").Range("A1").Value = Me.ComboBox2.Value
    Organisme = Sheets("champs pour listes").Range("A1").Value
     
    With Sheets("Liste des organismes")
     
    For n = 76 To 200
                If .Range("C" & n).Value = Organisme Then
                    .Range("D" & n & ":H" & n).Copy
                    Sheets("Liste projets").Range("A65535").End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlValues
                    Application.CutCopyMode = False
                End If
            Next n
     
    End With
    la boucle permet une recherche sur une colonne qui pourra recevoir d'autres lignes par la suite...

    cf.fichier.

    quelques explications : dans l'onglet "accueil" on peut ajouter un projet qui se retrouvera dans le tableau de l'onglet "Récapitulatif". Le cas qui ne fonctionne pas, c'est pour un maitre d'ouvrage qui est dans le 3e tableau de l'onglet" liste des organismes". ce dernier peut recevoir de nouveaux éléments par un deuxième userform ("Accueil"->"ajouter un client")....

  7. #7
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    si le nombre de ligne et variable, est tu sur que ton "200" est toujours suffisant.?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    a priori oui...

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    la définition de la variable organisme me semble floue. dans ton premier post tu dis
    if organisme = "conseil general" ou "dir so"
    dans ton dernier post, c'est la valeur de la cellule A1.
    tu utilise un combobox pour le choix de l'utilisateur, pourquoi ne pas prendre directement la valeur du combo comme variable

    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
    23
    With Sheets("Liste des organismes")
    Organisme= Me.ComboBox2.Value
    select case organisme
    case "conseil général"
           For i = 7 To 34
                If .Range("C" & i).Value = Département Then
                    .Range("D" & i & ":H" & i).Copy
                    Sheets("Liste projets").Range("A65535").End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlValues
                End If
    case "dir so"
           .Range("D69 : H69").Copy
            Sheets("Liste projets").Range("A65535").End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlValues
                Application.CutCopyMode = False
            End If
    case else' (en ce cas else est néamoins une valeur de la combo, donc pas de risque d'erreur
    For n = 76 To .Range("A65535").End(xlUp).row
                If .Range("C" & n).Value = Organisme Then
                    .Range("D" & n & ":H" & n).Copy
    Sheets("Liste projets").Range("A65535").End(xlUp).Offset(0, 9).PasteSpecial Paste:=xlValues
                End If
            Next n
    end select 
    End With

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    je ne sais pas pourquoi mais ton code ne marche pas, il y a un problème...

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    oui....mais encore ?
    si le code a un probleme, dis moi où, a quel momment, ou envoit le fichier ou tu l'a intégrer, la macro complete, je ne sais pas mais un element concret pour travailler.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    Mon fichier est accessible juste plus haut...

    pour te rendre compte de ce qui ne va pas tu peux faire comme ça...

    onglet "accueil" bouton "ajouter un projet"

    dans le userform rempli dans l'ordre

    "projet"
    "localisation"
    "Gironde"
    "Conseil Général"
    "Conseil général"

    la ligne se créée bien dans l'onglet "récapitulatif"

    Maintenant essaies avec :

    "projet"
    "localisation"
    "Corrèze"
    "Mairie de Saint Pantaleon de Larche"
    "Autre"

    On ne récupère que les données du userform...

    je te remets le fichier
    Fichiers attachés Fichiers attachés

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    désolé, je ne peux pas ouvrir les .rar. tu peux le mettre en zip ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    ok le voici en ZIP
    Fichiers attachés Fichiers attachés

  15. #15
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    ton probleme vien du fait que au moment de la boucle n = 76 pour 200, tu n'est pas sur la bonne feuille. tu es sur la feuille liste projet alors que tu devrais (si j'ai bien compris) etre sur la feuille liste des organisme

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    c'est bien sur la feuille listes des organismes que l'on doit être, mais je ne comprends pas pourquoi je serais sur la feuille liste projet?le with sheets ("liste des organismes") ne suffit pas?
    merci de t'être plongé dans mon fichier...

  17. #17
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    bien sur, je suis bete. la recherche s'effectue bien sur la bonne feuille, par contre a cet instant, tu recherche organisme et il est egal a correze alors que dans ta liste "autres", tu n'as que la mairie ( en c78).

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    cadeau
    je t'ai un peu commenté le code , tu y trouveras quelques ficelles. regarde le code du bouton ok de l'usf1

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Par défaut
    Merci pour ces petites corrections (pas si petites)

    Mais je ne crois pas que ça change mon problème...

    c'est toujours ce problème de boucle de n=76 à 200 qui n'arrive pas à trouver Mairie de Saint Pantaleon de Larche ou les lignes en dessous qui pourront être remplie par la suite...(usf2)

    Organisme = Me.Combobox2.value et après recherche dans cette colonne de la ligne ou est présent la valeur organisme...

    le fait de mettre Me.Combobox2.value=...A1.value
    C'était pour voir la valeur prise en compte...

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    il est évident que
    d'une part, la zone 76/200 doit contenir des données presente dans la Combobox et la tu n'as pas les meme données.
    dans le cas ou c'est conseil general est ce que tu as besoin de la boucle 76/200 ?
    tu a l'air de ne pas voulor utiliser une forme
    if then else qui te ferais le meme effet que case else de mon premier exemple
    actuellement tous tes cas passe par la boucle 76/200.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème avec la recherche FULLTEXT
    Par izbing dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2008, 22h13
  2. Problème avec la recherche en fulltext
    Par pepelele dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/05/2007, 14h32
  3. [0.8] Problème avec la recherche MVC (Tuto d'Akrabat)
    Par developpeur_mehdi dans le forum Zend_Db
    Réponses: 4
    Dernier message: 09/03/2007, 18h00
  4. problème avec un package non reconnu
    Par youp_db dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/09/2006, 09h37
  5. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17

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