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 :

Controler la saisie dans un tableau par une boite de dialogue [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Controler la saisie dans un tableau par une boite de dialogue
    bonsoir tous le monde,
    tout d'abord,je suis un apprenti vba excel
    je voudrais remplir mon tableau a partir de ma boite de dialogue,
    je m'explique.
    tableau constituer de colonnes (désignation; Prix unitaire; Et les dates du mois(31 jours))
    boite de dialogue.(Champ_désignation; Champ_quantité; Champ_prix unitaire; Champ_date ,)
    alors voila mon code que j'ai écrit dans le module
    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
    Option Explicit
     
    Sub proced_Ajout_pdt_divers()
        Ajout_pdt_divers.champ_designation = ""
        Ajout_pdt_divers.champ_qte_entree = ""
        Ajout_pdt_divers.champ_prix_unitaire = ""
        Ajout_pdt_divers.Show
        Sheets("ENTREES DIVERS").Select
        Rows("10:10").Select
        Selection.Insert shift:=xlDown
        Range("a10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_designation
        Range("b10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_prix_unitaire
        If Sheets("ENTREES DIVERS").Range("d9") = Ajout_pdt_divers.champ_dte Then
            Range("d10").Select
            ActiveCell.Formula = Ajout_pdt_divers.champ_qte_entree
        Else
            If Sheets("ENTREES DIVERS").Range("e9") = Ajout_pdt_divers.champ_dte Then
                Range("e10").Select
                ActiveCell.Formula = Ajout_pdt_divers.champ_qte_entree
            Else
                If Sheets("ENTREES DIVERS").Range("f9") = Ajout_pdt_divers.champ_dte Then
                    Range("f10").Select
                    ActiveCell.Formula = Ajout_pdt_divers.champ_qte_entree
                Else
                    If Sheets("ENTREES DIVERS").Range("g9") = Ajout_pdt_divers.champ_dte Then
                        Range("g10").Select
                        ActiveCell.Formula = Ajout_pdt_divers.champ_qte_entree
                    Else
                        If Sheets("ENTREES DIVERS").Range("h9") = Ajout_pdt_divers.champ_dte Then
                            Range("h10").Select
                            ActiveCell.Formula = Ajout_pdt_divers.champ_qte_entree
                        Else
        End If
            End If
    mon problème c comment indiquer a excel de me remplir la quantité du produit désigné selon la date écrite dans ma boite de dialogue
    pour mieux me comprendre je vous envoie mon classeur en pièce jointe
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    au lieu de ton paquet de if, il faut faire une boucle du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = 4 to 34 ' 4 pour colonne D et 34 pour colonne AH
     
         If Sheets("ENTREES DIVERS").cells(9,i).value = Ajout_pdt_divers.champ_dte then
              cells(10,i).value =  Ajout_pdt_divers.champ_qte_entree
         end if
    next

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, pour cela voir Obliger une saisie numérique dans une TextBox
    Il y a des composants pour éviter les erreurs de saisie sur les dates : Monthview, DTPicker

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci gnain de votre réponse;
    mais svp est ce que tout d’abord je dois déclarer le i (la 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
    Option Explicit
     
    Sub proced_Ajout_pdt_divers()
        Ajout_pdt_divers.champ_designation = ""
        Ajout_pdt_divers.champ_qte_entree = ""
        Ajout_pdt_divers.champ_prix_unitaire = ""
        Ajout_pdt_divers.Show
        Sheets("ENTREES DIVERS").Select
        Rows("10:10").Select
        Selection.Insert shift:=xlDown
        Range("a10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_designation
        Range("b10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_prix_unitaire
        Dim dtejour As Date
        For dtejour = 4 To 34 ' 4 pour colonne D et 34 pour colonne AH
     
            If Sheets("ENTREES DIVERS").Cells(9, dtejour).Value = Ajout_pdt_divers.champ_dte Then
              Cells(10, dtejour).Value = Ajout_pdt_divers.champ_qte_entree
            End If
        Next
     
    End Sub
    j'ai essayer comme ça mais ça n'a pas marcher
    un peu de patience svp
    je tiens aussi a remercier kiki29

  5. #5
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    C'est normal que ça fonctionne pas, tu a déclaré dtejour as date
    ta variable dtejour doit être de type integer
    quand on écrit une boucle
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For dtejour = 1 to 6
       ...
    Next
    cela veut dire que la valeur de la variable dtejour commencera à 1, puis à chaque passage elle sera incrémenté de 1
    jusqu'à 6 passage, puis la boucle est fini.

    dans Cells(10, dtejour).Value, 10 veut dire le numéro de la ligne et la variable dtejour veut dire le numéro de la colonne
    donc dtejour doit être de type Integer

  6. #6
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    2 choses ne fonctionnaient pas

    1e chose
    il fallait déclarer une variable date (voir commentaire: nouvelle ligne)

    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
    Sub proced_Ajout_pdt_divers()
        Ajout_pdt_divers.champ_designation = ""
        Ajout_pdt_divers.champ_qte_entree = ""
        Ajout_pdt_divers.champ_prix_unitaire = ""
        Ajout_pdt_divers.Show
        Sheets("ENTREES DIVERS").Select
        Rows("10:10").Select
        Selection.Insert shift:=xlDown
        Range("a10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_designation
        Range("b10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_prix_unitaire
        Dim dtejour As Integer
        'nouvelle ligne
        Dim dteVerif As Date
        For dtejour = 4 To 34 ' 4 pour colonne D et 34 pour colonne AH
             'nouvelle ligne
            dteVerif = Sheets("ENTREES DIVERS").Cells(9, dtejour).Value
            If dteVerif = Ajout_pdt_divers.champ_dte Then
                Cells(10, dtejour).Select
                Cells(10, dtejour).Value = Ajout_pdt_divers.champ_qte_entree
            End If
        Next
     
    End Sub

    2e chose
    dans ton userform le textbox champ_dte n'était pas du même format que la date dans les cellules d'excel
    voici le code pour avoir le même format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
        champ_dte.Text = Format(Now, "yyyy-mm-dd")
    End Sub
    avec ces changements tout fonctionne.

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    bonjour gnain
    je te remercie beaucoup tu m'a fait gagner du temps
    ça marche parfaitement bien;mais il reste un tout petit problème c que
    quand je fais la somme des cellules de la ligne 10 il me met 0

  8. #8
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    il faut mettre le format de cellule à Nombre et transformer tes nombres en double CDbl(valeur)
    Voir commentaire

    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
    Sub proced_Ajout_pdt_divers()
        Ajout_pdt_divers.champ_designation = ""
        Ajout_pdt_divers.champ_qte_entree = ""
        Ajout_pdt_divers.champ_prix_unitaire = ""
        Ajout_pdt_divers.Show
        Sheets("ENTREES DIVERS").Select
        Rows("10:10").Select
        Selection.Insert Shift:=xlDown
        Range("a10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_designation
        Range("b10").Select
     
        '============================
        'nombres en double
        ActiveCell.Formula = CDbl(Ajout_pdt_divers.champ_prix_unitaire)
        '============================
     
        '============================
        'format de cellule
        Rows("10:10").Select
        Selection.NumberFormat = "General"
        '============================
     
        Dim dtejour As Integer
        Dim dteVerif As Date
        For dtejour = 4 To 34 ' 4 pour colonne D et 34 pour colonne AH
            dteVerif = Sheets("ENTREES DIVERS").Cells(9, dtejour).Value
            If dteVerif = Ajout_pdt_divers.champ_dte Then
                Cells(10, dtejour).Select
                '========================================
                'nombres en double
                Cells(10, dtejour).Value = CDbl(Ajout_pdt_divers.champ_qte_entree)
                '========================================
     
            End If
        Next
     
    End Sub

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    bonjour
    merci gnain pour ton aide,
    vive le forum developpez.net
    tu assure gnain merci beaucoup

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    bonsoir,gnain
    en bas de la colonne t/prix j'ai une cellule dont laquelle je fais la somme des prix ,
    le problème c que chaque fois qu’une ligne est inséré la cellule ou est la somme des prix ne prend pas en charge la ligne inséré
    je ne sais quoi faire
    Fichiers attachés Fichiers attachés

  11. #11
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour,
    il faut ajouter par code les formules
    Je t'ai même mis
    la formule de somme de la nouvelle ligne 10
    la formule de produit de la ligne 10
    et la formule de somme total de la colonne AJ

    voici le code 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
    Sub proced_Ajout_pdt_divers()
        Ajout_pdt_divers.champ_designation = ""
        Ajout_pdt_divers.champ_qte_entree = ""
        Ajout_pdt_divers.champ_prix_unitaire = ""
        Ajout_pdt_divers.Show
        Sheets("ENTREES DIVERS").Select
        Rows("10:10").Select
        Selection.Insert Shift:=xlDown
        Range("a10").Select
        ActiveCell.Formula = Ajout_pdt_divers.champ_designation
        Range("b10").Select
        ActiveCell.Formula = CDbl(Ajout_pdt_divers.champ_prix_unitaire)
     
        Rows("10:10").Select
        Selection.NumberFormat = "General"
     
     
        Dim dtejour As Integer
        Dim dteVerif As Date
        For dtejour = 4 To 34 ' 4 pour colonne D et 34 pour colonne AH
            dteVerif = Sheets("ENTREES DIVERS").Cells(9, dtejour).Value
            If dteVerif = Ajout_pdt_divers.champ_dte Then
                Cells(10, dtejour).Select
                Cells(10, dtejour).Value = CDbl(Ajout_pdt_divers.champ_qte_entree)
            End If
        Next
     
        'nouvelles lignes
        '======================================
        Cells(10, 35).FormulaLocal = "=SOMME(C10:AH10)"
        Cells(10, 36).FormulaLocal = "=B10 * AI10"
        Cells(Range("AJ" & Rows.Count).End(xlUp).Row, 36).FormulaLocal = "=SOMME(AJ10:AJ" & Range("AJ" & Rows.Count).End(xlUp).Row - 1 & ")"
        '======================================
     
    End Sub

  12. #12
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    bonjour gnain
    je serais perdu sans toi, merci
    que peux tu me conseiller pour maitriser tout ca

  13. #13
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par narjissio Voir le message
    que peux tu me conseiller pour maitriser tout ca
    Bonjour,
    -Forum Developpez
    -Temps et patience
    -Google
    -Enregistreur de macro dans excel

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

Discussions similaires

  1. Confirmer une suppression par une boite de dialogue
    Par asirier dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/05/2013, 13h39
  2. Réponses: 10
    Dernier message: 09/11/2010, 00h34
  3. Réponses: 0
    Dernier message: 21/10/2010, 17h58
  4. Choix d'un fichier par une boite de dialogue
    Par frevale dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/04/2009, 16h27
  5. Réponses: 4
    Dernier message: 06/07/2007, 13h57

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