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 :

Utilisation de la fonction CLng


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut Utilisation de la fonction CLng
    Bonjour à tous.
    J'utilise un UserForm avec plusieurs textBox pour la gestion de l'économat.
    La macro que j'ai conçu marche bien mais un problème se pose.
    Pour une demande de 10 articles du même service, mes collaborateurs étaient obligés de saisir les mêmes informations chaque fois.
    Pour leur faciliter la tache , j'ai utilisé la fonction CLng quej'ai trouvée sur le forum et ça marche bien pour la saisie des données.
    Le probleme est que après une saisie de plusieurs articles (15 par exemple) pour la même personne, il faut clicquer le nombre de fois ( 15 par exemple) avant que UserForm ne vide (Unload).

    Y a - t- il un bout de code VBA (excel) pour m'aider à décharger mon UserForm sans avoir à cliquer plusieurs fois sur "Quitter" ?

    Merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bon,jour,
    Et cest quoi, cette fonction "cLong" ?
    Je ne la connais pas et n'ai pas envie de la chercher. Expose-la.

  3. #3
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bon,jour,
    Et cest quoi, cette fonction "cLong" ?
    Je ne la connais pas et n'ai pas envie de la chercher. Expose-la.
    Voici un bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     With Sheets("Sorties")
         .Range("F" & MaLigne).Value = MonStockOuverture          
        .Range("G" & MaLigne).Value = MaQuantitéDemandée
        .Range("H" & MaLigne).Value = MaQuantitéLivrée            
        .Range("I" & MaLigne).Value = CLng(MonStockFermeture)
        .Range("A" & MaLigne).Select
     
        UF_Achat.Hide
        End With
    C'est la fonction CLng.
    Elle m'a permis de complèter plusieurs articles pour le même client avant de choisir un nouveau client.
    Seulement qu'à la fin, pour sortir du UserForm, il réapparait autant de fois que le bouton valider a été clicqué.
    Ce qui ralentit la saisie de l'achat d'un nouveau client
    Merci pour l'attention

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Ah .. Voilà notre "cLong" enfin corrigé ...
    ce n'est pas le bout de code que tu montres-là qui nous permet de t'aider. Ce ne sont pas non plus ces instructions qui, seules, réaffichent ton userform.
    Il est vraisemblable que ton problème se situe dans un évènement worksheet_change, à montrer en entier, depuis Private .... jusqu'à end sub inclus.
    Je jurerais que tu re-provoques en boucle sa survenue en modifiant depuis ton userform une cellule soumise à cet évènement (j'en suis même certain).

  5. #5
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut
    Citation Envoyé par unparia Voir le message
    Ah .. Voilà notre "cLong" enfin corrigé ...
    ce n'est pas le bout de code que tu montres-là qui nous permet de t'aider. Ce ne sont pas non plus ces instructions qui, seules, réaffichent ton userform.
    Il est vraisemblable que ton problème se situe dans un évènement worksheet_change, à montrer en entier, depuis Private .... jusqu'à end sub inclus.
    Je jurerais que tu re-provoques en boucle sa survenue en modifiant depuis ton userform une cellule soumise à cet évènement (j'en suis même certain).
    Ok
    Je vais envoyer
    Le code au complet
    ______________________________________________
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub Bouton_Valider_Click()
    Dim Formule, Message As String, Réponse As Integer
     
        If Not IsDate(Me.TB_Date_Demande.Value) Or Not Len(Me.TB_Date_Demande.Value) > 0 Then
            Message = "Veuillez entrer une date valide !"
            Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
            Me.TB_Date_Demande.SetFocus
            Exit Sub
        End If
     
        If Not IsDate(Me.TB_Date_Saisie.Value) Or Not Len(Me.TB_Date_Saisie.Value) > 0 Then
            Message = "Veuillez entrer une date valide !"
            Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
            Me.TB_Date_Saisie.SetFocus
            Exit Sub
        End If
     
        If Not IsNumeric(Me.TB_Quantité_Demandée.Value) Or Not Len(Me.TB_Quantité_Demandée.Value) > 0 Then
            Message = "Veuillez entrer une quantité valide !"
            Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
            Me.TB_Quantité_Demandée.SetFocus
            Exit Sub
        End If
     
        Call Vérifier_Quantité_Demandée
     
        If Not IsNumeric(Me.TB_Quantité_Livrée.Value) Or Not Len(Me.TB_Quantité_Livrée.Value) > 0 Then
            Message = "Veuillez entrer une quantité valide !"
            Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
            Me.TB_Quantité_Livrée.SetFocus
            Exit Sub
        End If
     
        Call Vérifier_Quantité_Sortie
     
        'Formule = "=RECHERCHEV(" & Chr(34) & Me.CB_Article.Value & Chr(34) & "; Liste_Articles;1;faux)"
        'Range("Cellule_Article").FormulaLocal = Formule
     
        If Not Len(Me.CB_Article.Value) > 0 Or Me.CB_Article.Value = "Articles" Then ' Or IsError(Range("Cellule_Témoin").Value)
            Message = "Veuillez choisir un article valide"
            Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
            Me.CB_Article.SetFocus
            Exit Sub
        End If
        'Formule = "=RECHERCHEV(" & Chr(34) & Me.CB_Service.Value & Chr(34) & "; Liste_Services;1;faux)"
        'Range("Cellule_Service").FormulaLocal = Formule
     
        If Not Len(Me.CB_Service_demandeur.Value) > 0 Or Me.CB_Service_demandeur.Value = "Libellé" Then ' Or IsError(Range("Cellule_Service").Value)
            Message = "Veuillez entrer un Service valide !"
            Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
            Me.CB_Service_demandeur.SetFocus
            Exit Sub
        End If
    Call Ecrire_Achats
    Application.ScreenUpdating = False
    Unload Me
    End Sub
    __________________________________
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Bouton_Quitter_Click()
    Application.ScreenUpdating = False
    Unload Me
    End Sub
    _________________________________________
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TB_Date_Demande_AfterUpdate()
    Dim Message As String, Réponse As Integer
     
    If Not IsDate(Me.TB_Date_Demande.Value) Then
        Message = "Veuillez entrer une date valide !"
        Réponse = MsgBox(Message, vbOKOnly, "Controle de saisie")
        Me.TB_Date_Demande.SetFocus
    End If
    End Sub
    _______________________________________________
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub Ecrire_Achats()
    MaDate = .TB_Date_Saisie.Value                            
        MaDateDemande = .TB_Date_Demande.Value                  
        MonRéceptionnaire = .TB_Réceptionnaire.Value             
        MonArticle = .CB_Article.Value                    
        MaCatégorie = .TB_Catégorie.Value                 
        MonStockOuverture = .TB_Stock_Ouverture.Value       
        MaQuantitéDemandée = .TB_Quantité_Demandée.Value    
        MaQuantitéLivrée = .TB_Quantité_Livrée.Value        
        MonStockFermeture = .TB_Stock_Fermeture.Value       
        MonService = .CB_Service_demandeur.Value                  
        MesObservations = .TB_Observations.Value                  
     
    End With
     
    With Sheets("Achats")
     
        'Date (colonne A)
        .Range("A" & MaLigne).Value = MaDate
        .Range("B" & MaLigne).Value = MaDateDemande     'Service (colonne B)
        .Range("J" & MaLigne).Value = MonRéceptionnaire
        .Range("K" & MaLigne).Value = MesObservations    'Observations (colonne K)
        .Range("E" & MaLigne).Value = MonService        'Service (colonne E)
        .Range("C" & MaLigne).Value = MonArticle        'Article (colonne C)
        .Range("D" & MaLigne).Value = MaCatégorie
        .Range("F" & MaLigne).Value = MonStockOuverture           'Stock Ouverture (colonne F)
        .Range("G" & MaLigne).Value = MaQuantitéDemandée
        .Range("H" & MaLigne).Value = MaQuantitéLivrée             'Quantitée Livrée (colonne H)
        .Range("I" & MaLigne).Value = CLng(MonStockFermeture)
        .Range("A" & MaLigne).Select
     
        UF_Achats.Hide
        End With
     
       With Sheets("Mouvements")
     
        .Range("A4").Value = "Sortie"
        .Range("B4").Value = MaDate
        .Range("C4").Value = MaDateDemande
        .Range("D4").Value = "-" '
        .Range("E4").Value = "-" 'MaCatégorie
        .Range("F4").Value = MonArticle '
        .Range("G4").Value = "A: " & MonService
        .Range("H4").Value = MaQuantitéDemandée '
        .Range("I4").Value = " - "
        .Range("J4").Value = "-" & MaQuantitéLivrée ' précédé du signe "-"
        .Range("K4" & MaLigne).Value = MonStockOuverture '
        .Range("L4").Value = MonStockFermeture
        .Range("M4").Value = "-"
        .Range("N4").Value = "-"
        .Range("O4").Value = " - "
        .Range("P4").Value = MonRéceptionnaire
        .Range("Q4" & MaLigne).Value = "-"
        .Range("R4").Value = MesObservations
        .Protect
        End With
        If MsgBox("Souhaitez-vous ajouter d'autres articles pour ce service ?", vbQuestion + vbYesNo, TitreMsg) = vbYes Then
        Call Complèter_Article_Livré
        UF_Achats.CB_Article.SetFocus
        UF_Achats.Show
       End sub
    Voilà tous les codes

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Max Ledoux Voir le message
    Pour leur faciliter la tache , j'ai utilisé la fonction CLng quej'ai trouvée sur le forum et ça marche bien pour la saisie des données.
    C'est la fonction CLng.
    Elle m'a permis de complèter plusieurs articles pour le même client avant de choisir un nouveau client.
    La fonction cLng ne sert pas à saisir des données mais à transformer une donnée en type "Long".
    C'est juste une fonction de conversion.
    https://msdn.microsoft.com/en-us/VBA...sion-functions

  7. #7
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut
    C'est bien noté.
    Et pour libérer ces données, y a-t-il autres fonctions ou code ?

Discussions similaires

  1. [LG]Utilisation de la fonction time
    Par kmitz dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2005, 13h05
  2. Utilisation de la fonction de déploiement
    Par mchicoix dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/03/2005, 14h35
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 14h20
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

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