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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 17
    Points
    17
    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 expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    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 à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 17
    Points
    17
    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 éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    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
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 17
    Points
    17
    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 éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    si le nombre de ligne et variable, est tu sur que ton "200" est toujours suffisant.?
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

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

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

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    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 à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

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

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    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 à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 17
    Points
    17
    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 expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

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

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

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

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

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