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 :

recherche de données existantes dans colonne et if


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut recherche de données existantes dans colonne et if
    Bonjour,

    et oui encore un problème
    J'ai essayé de construire un code mais je ne sais pas pourquoi ça plante.
    En gros j'ai le nom d'un film dans une cellule, et le porgramme doit vérifier si ce film n'est pas déjà entré dans une colonne d'une autre feuille. Si c'est le cas il affiche une msgbox, sinon il rentre des données sur cette même feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub LouerUnFilm()
    Dim LigneFonction As Long
    Sheets("Feuil5").Activate
    LigneSuivante = Application.WorksheetFunction. _
     CountA(Range("A:A")) + 1
     For Each c In Worksheets("Feuil5").Range("C:C")
                 If c Like [CelluleFilmChoisi] Then MsgBox "Le film" &     [CelluleFilmChoisi] & "est déjà loué. Veuillez choisir un autre film."
                                    Else: Cells(LigneSuivante, 1) = [CelluleNomF]
                                          Cells(LigneSuivante, 2) = [celluleNuméroAdhérent]
                                           Cells(LigneSuivante, 3) = [CelluleFilmChoisi]
                                           Cells(LigneSuivante, 4) = [DateDuJour]
                                     End If
    Next
    excel me dit que le problème vient de if qui n'existe pas ("pas de End If sans If")

    Merci beaucoup

    Elvidre

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonsoir
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If c Like [CelluleFilmChoisi] Then MsgBox "Le film" &     [CelluleFilmChoisi] & "est déjà loué. Veuillez choisir un autre film."
                                    Else: Cells(LigneSuivante, 1) = [CelluleNomF]
                                          Cells(LigneSuivante, 2) = [celluleNuméroAdhérent]
                                           Cells(LigneSuivante, 3) = [CelluleFilmChoisi]
                                           Cells(LigneSuivante, 4) = [DateDuJour]
                                     End If
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If c Like [CelluleFilmChoisi] Then 'aller à la ligne
    MsgBox "Le film" &     [CelluleFilmChoisi] & "est déjà loué. Veuillez choisir un autre film."
                                    Else: Cells(LigneSuivante, 1) = [CelluleNomF]
                                          Cells(LigneSuivante, 2) = [celluleNuméroAdhérent]
                                           Cells(LigneSuivante, 3) = [CelluleFilmChoisi]
                                           Cells(LigneSuivante, 4) = [DateDuJour]
                                     End If
    Abed_H

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Ca marche mais c'est bizarre ça fait planter excel

    En fait ça marche pas vraiment : ça me rentre les données (du else) même si le film n'est pas présent dans la colonne et ça m'affiche systématiquement le msgbox. Et là quand je clique sur "ok" ça plante

    bizarre bizarre.......

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Et si vous mettez simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If c Like [CelluleFilmChoisi] Then 'aller à la ligne
    MsgBox "Le film" &     [CelluleFilmChoisi] & "est déjà loué. Veuillez choisir un autre film."
    Else
    Cells(LigneSuivante, 1) = [CelluleNomF]
    Cells(LigneSuivante, 2) = [celluleNuméroAdhérent]
    Cells(LigneSuivante, 3) = [CelluleFilmChoisi]
    Cells(LigneSuivante, 4) = [DateDuJour
    End If
    Quel est le résultat ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Ca fait la même chose
    apparement il ne s'agit pas d'un simple problème de mise en page
    c'est bizarre qu'il ne respecte pas le If et commence par le else

    personne pour me dire ce qui ne va pas dans ce code ? J'ai essayé de le tourner dans tous les sens j'ai toujours le même résultat

    ou peut être auriez vous une idée pour quelque chose de plus simple ?

    Merci, ce serait super si ça pouvait marcher

    elvidre

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir Elvidre,

    Le problème est que l'on n'a qu'une partie de votre code et dans votre 1er message vous écrivez :

    J'ai essayé de construire un code mais je ne sais pas pourquoi ça plante.
    excel me dit que le problème vient de if qui n'existe pas ("pas de End If sans If"
    et ensuite :

    Ca fait la même chose
    apparement il ne s'agit pas d'un simple problème de mise en page
    c'est bizarre qu'il ne respecte pas le If et commence par le else
    Est-ce à dire que maintenant vous n'avez plus le message d'erreur précédent ?

    Avez-vous testé en pas-à-pas ?

    Sinon la meilleure solution serait que vous joigniez une copie de votre fichier même avec simplement quelques lignes de données.

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    ok j'envoie le fichier, j'ai essayé le débogage pas à pas mais il n'indique pas le problème alors je suis votre conseil

    le bouton de lancement du programme se situe feuil3
    le programme vba est le dernier de la feuille module1 dans l'éditeur

    Merci

    Elvidre
    Fichiers attachés Fichiers attachés

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Elvidre,

    Je viens de me lancer dans la reconnaissance de votre code et pour l'instant sur la procédure dont vous avez parlé.

    Déjà il il y des lignes redondantes entre la procédure Sub LouerUnFilm() du Module1 et Private Sub LouerUnFilm() du Userform3 mais ce n'est pas là le problème.

    Dans cette dernière il y a également une erreur, vous avez écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Unlaod.Me
     
    au lieu de :
     
    Unload.Me
    Le code dans Module1:

    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
    Sub LouerUnFilm()
    Dim LigneFonction As Long
    Sheets("Feuil5").Activate
    LigneSuivante = Application.WorksheetFunction. _
     CountA(Range("A:A")) + 1
     lign = 2
     For Each c In Worksheets("Feuil5").Range("C:C")
        If lign > LigneSuivante Then
        Cells(LigneSuivante, 1) = [CelluleNomF]
        Cells(LigneSuivante, 2) = [celluleNuméroAdhérent]
        Cells(LigneSuivante, 3) = [CelluleFilmChoisi]
        Cells(LigneSuivante, 4) = [DateDuJour]
        MsgBox "Le film " & [CelluleFilmChoisi] & " a été enregistré dans les films loués."
        Exit Sub
        End If
     
     
        If c Like [CelluleFilmChoisi] Then
        MsgBox "Le film " & [CelluleFilmChoisi] & " est déjà loué. Veuillez choisir un autre film."
        Sheets("Feuil3").Activate
        UserForm3.Show
        End If
    lign = lign + 1
    Next
     
     
    End Sub
    Pensez à indiquer à cliquer sur RESOLU pour vos précédents messages comme le demande ci-dessus Alain Tech.

  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Ca marche, merci beaucoup pour ton aide, j'avais passé aujourd'hui 2 heures dessus sans succès.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/02/2011, 11h45
  2. Réponses: 5
    Dernier message: 21/01/2011, 10h43
  3. Eviter l'ajout de données existantes dans une table
    Par Tatoine dans le forum Access
    Réponses: 6
    Dernier message: 05/07/2006, 15h21
  4. Chercher une donnée existante dans un fichier
    Par BXDSPORT dans le forum Langage
    Réponses: 4
    Dernier message: 09/10/2005, 18h04

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