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 :

Résultat Userform en fontion d'une Cellule d'un Feuille excel [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2013
    Messages : 103
    Par défaut Résultat Userform en fontion d'une Cellule d'un Feuille excel
    Bonjour à tous,

    Je rencontre actuellement un petit problème et j'ai cherché sur internet mais rien à faire je n'ai pas trouvé ce que je voulais alors je fais appelle à votre précieuse aide, la communauté Développez !

    - J'ai créé une liste dans une Feuille "Projets" dans laquelle il y a un certain nombre de projet ( chaque ligne représente un projet ).
    - J'ai créé un commande button sur cette même feuille " Projets" me permettant d'ouvrir un UserForm "UserForm1" dans lequel je renseigne les données d'un nouveau projet au travers de textbox et un commandbutton "Ajouter Le Projet" pour ajouter ce nouveau projet à ma liste, sauf que si ce projet existe déjà et bien il se rajoute à la liste alors que j'aimerais que Excel reconnaise que ce projet exite déjà et affiche un msgbox du type " Ce projet existe déjà !".

    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
     
    Public Sub CommandButton1_Click()
    Worksheets("Projets").Select
    Dim ligne As Integer
    Dim Occurence As Integer
     
    Occurence = Application.Worksheets("Projets").Name.Count(Range("A1"), "=Userform1.TextBox1.Value")
     
    If Occurence.Value > 0 Then
     
        MsgBox ("Ce projet existe déjà!")
     
    Else
     
    ligne = Range("A1").End(xlDown).Row + 1
    Cells(ligne, 1) = TextBox1.Value
    Cells(ligne, 2) = TextBox2.Value
    Cells(ligne, 3) = TextBox3.Value
    Cells(ligne, 4) = TextBox4.Value
    Cells(ligne, 5) = TextBox5.Value
    Cells(ligne, 6) = TextBox6.Value
    Cells(ligne, 7) = TextBox7.Value
    Cells(ligne, 8) = TextBox8.Value
    Cells(ligne, 9) = TextBox9.Value
     
    End If
     
    End Sub
    Je me retrouve avec une erreur "Qualificatif Incorrect" et je ne comprends pas ce que cela veut dire:
    en effet j'ai ensuite essayé de change ma variable Occurence non plus en Integer mais en Range et la le message d'erreur est "Objet requis".

    Je pense que le problème vient de ma déclaration de variable mais je n'en suis pas certain, ou alors changer l'étendue d'application de la macro ( Public Sub ?)

    Qu'en pensez-vous ?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Occurence  = WorksheetFunction.CountIf(ThisWorkbook.Worksheets("Projets").Range("A:A"), "=" & me.TextBoix1.Value)
    et tu peux aussi utiliser Find.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Dim feuille As Worksheet: Set feuille = ThisWorkbook.Worksheets("Projets")
        Dim cellule As Range: Set cellule = Nothing
     
        Set cellule = feuille.Columns(1).Find(me.TextBox1.Value)
     
        If cellule Is Nothing Then
                Debug.Print "Non trouve"
            Else
                Debug.Print "Trouve"
        End If
     
        Set cellule = Nothing
        Set feuille = Nothing
    Et si tu donnes nom a ta feuille (ex : feuilleProjet, dans l'editeur de code) tu n'as meme pas besoin du

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim feuille As Worksheet: Set feuille = ThisWorkbook.Worksheets("Projets")
    Tu peux ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set cellule = feuilleProjet.Columns(1).Find(me.TextBox1.Value)
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Et si tu veux quelque chose d'encore plus "propre" tu peux definer la function suivante dans le code associe a la feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Function EstProjetExistant(prmIdProjet as string) as Boolean
       dim cellule as range: set cellule=nothing
       set cellule=me.Columns(1).Find(prmIdProjet)
       EstProjetExistant=(not (cellule is nothing))
    end function
    et dans ton formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if feuilleProjet.EstProjetExistant(me.IdProjet.Value) then
       msgbox "Le projet existe"
    end if
    Comme cela ton formulaire n'a pas besoin de savoir dans quelle colonne chercher.

    J'ai change TextBox1 pour IDProjet car je trouve que c'est plus clair.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2013
    Messages : 103
    Par défaut
    Bonjour marot_r

    Tout d'abord merci d'avoir pris le temps de me répondre !

    La première solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Occurence  = WorksheetFunction.CountIf(ThisWorkbook.Worksheets("Projets").Range("A:A"), "=" & me.TextBoix1.Value)
    ne fonctionne pas je retomre sur la même erreur.

    La deuxième solution avec marche très bien mais je ne comprends juste pas la fin du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set cellule = Nothing
    Set feuille = Nothing
    A quoi cela sert-il de faire un "reset" des valeurs de cellule et feuille ?

    Je n'ai pas testé la troisième solution car je ne comprends pas trop le code mais je vais me pencher dessus car cela me paraît plus lisible comme syntaxe !

    Merci

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

Discussions similaires

  1. [XL-2013] Créer et ouvrir userform en cliquant sur une cellule.
    Par BAYRAL dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2017, 16h18
  2. Excel : le résultat d'une cellule modifie plusieurs feuilles
    Par M. De la Guigne dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 21/11/2016, 13h23
  3. Réponses: 1
    Dernier message: 06/12/2014, 22h03
  4. Réponses: 7
    Dernier message: 23/08/2010, 22h26
  5. reporter une cellule dans plusieurs feuilles excel
    Par tigdub1gal dans le forum Excel
    Réponses: 17
    Dernier message: 07/06/2007, 01h23

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