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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    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 émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    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 confirmé
    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
    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
    Membre habitué
    Inscrit en
    Janvier 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 11
    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 émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    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 émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    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.

+ 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