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 :

Enregistrer un formulaire dans la première cellule vide


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut Enregistrer un formulaire dans la première cellule vide
    Bonjour,

    J'ai créer un formulaire, et je veux que les données entrées seront affichés sur la première ligne vide à partir de la ligne 10 de la colonne A [A10], sauf que des fois ça marche pour moi et des fois il incrémente les valeurs sur la même ligne ou bien il affiche rien.

    Deuxième problème, avec l'incrémentation de la valeur date sur la colonne F et G, bloque toujours et empêche l'exécution du macro.

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     Dim i As Long
     
        If MsgBox("Confirmez-vous l’insertion de cette nouvelle commande ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
    Unload Me
     
    If Worksheets("COMMANDES").Range("A10") = "" Then
            i = 10
            Else
             i = Worksheets("COMMANDES").Range("A65535").End(xlUp).Row + 1
        End If
     
            MsgBox i
     
            Sheets("COMMANDES").Range("A" & i).Value = UserForm3.TextBox1.Value
     
            Sheets("COMMANDES").Range("B" & i).Value = UserForm3.TextBox2.Value
     
            Sheets("COMMANDES").Range("C" & i).Value = UserForm3.ComboBox1.Value
     
            Sheets("COMMANDES").Range("D" & i).Value = UserForm3.ComboBox2.Value
     
            Sheets("COMMANDES").Range("E" & i).Value = UserForm3.TextBox3.Value
     
            Sheets("COMMANDES").Range("F" & i).Value = DateSerial(UserForm3.ComboBox5.Value, UserForm3.ComboBox4.Value, UserForm3.ComboBox3.Value)
     
            Sheets("COMMANDES").Range("G" & i).Value = DateSerial(UserForm3.ComboBox8.Value, UserForm3.ComboBox7.Value, UserForm3.ComboBox6.Value)
     
            Sheets("COMMANDES").Range("J" & i).Value = UserForm3.TextBox4.Value
     
            Sheets("COMMANDES").Range("K" & i).Value = UserForm3.ComboBox9.Value
     
            Sheets("COMMANDES").Range("L" & i).Value = UserForm3.ComboBox10.Value
     
            Sheets("COMMANDES").Range("F" & i).NumberFormat = "dd\/mm\/yyyy"
     
            Sheets("COMMANDES").Range("G" & i).NumberFormat = "dd\/mm\/yyyy"
     
     
        End If
    Merci les amis.

  2. #2
    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 Ihaben Voir le message
    des fois il incrémente les valeurs sur la même ligne ou bien il affiche rien.
    Ne serait-ce pas dans les cas où le champ TextBox1 de la saisie précédente était vide ?

    Deuxième problème, avec l'incrémentation de la valeur date sur la colonne F et G, bloque toujours et empêche l'exécution du macro.
    Sans doute parce que les données dans ComboBox3 à ComboBox8 ne contiennent pas des valeurs conformes à des paramètres de DateSerial.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    En répondant à tes questions Menhir :

    • Premier problème : ce n'est pas le cas

    • Deuxième problème : les valeurs dans les Combobox sont que des valeurs (Voir le 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
     For i = 1 To 31
                ComboBox3.AddItem i
           Next i
     
           For i = 1 To 12
                ComboBox4.AddItem i
           Next i
     
     
           For i = 2018 To 2100
                ComboBox5.AddItem i
           Next i
     
               For i = 1 To 31
                ComboBox6.AddItem i
           Next i
     
           For i = 1 To 12
                ComboBox7.AddItem i
           Next i
     
     
           For i = 2018 To 2100
                ComboBox8.AddItem i
           Next i
    Apparemment c'est le deuxième problème qui me bloque tous, approprie si sa marche, tous va marcher.

    Merci

  4. #4
    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 Ihaben Voir le message
    Deuxième problème : les valeurs dans les Combobox sont que des valeurs (Voir le code)
    VBA ne partage pas cet avis et moi non plus.
    Combobox n'est pas une valeur mais une collection (donc une série de valeurs).
    D'ailleurs, à ma connaissance, Combobox n'a pas de propriété "Value".

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    Citation Envoyé par Menhir Voir le message
    VBA ne partage pas cet avis et moi non plus.
    Combobox n'est pas une valeur mais une collection (donc une série de valeurs).
    D'ailleurs, à ma connaissance, Combobox n'a pas de propriété "Value".
    Si, ca fonctionnais avec le même code que j'avais utilisé sur un autre projet.
    Sur celui la, au cours de l'exécution je recoit un message de "Erreur d'exécution 13 :Incompatibilité de type" , et j'ai cette ligne en jaune :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("COMMANDES").Range("F" & i).Value = DateSerial(UserForm3.ComboBox5.Value, UserForm3.ComboBox4.Value, UserForm3.ComboBox3.Value)

  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 Ihaben Voir le message
    Si, ca fonctionnais avec le même code que j'avais utilisé sur un autre projet.
    Sur celui la, au cours de l'exécution je recoit un message de "Erreur d'exécution 13 :Incompatibilité de type"
    Ce message d'erreur prouve que VBA est d'accord avec moi.
    Libre à toi de penser différemment. Mais ça va être difficile de convaincre VBA que tu as raison.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Ce message d'erreur prouve que VBA est d'accord avec moi.
    Libre à toi de penser différemment. Mais ça va être difficile de convaincre VBA que tu as raison.
    Voici le code que j'avais utilisé pour l'autre projet et pourtant ca fonctionnais bien :

    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
    If MsgBox("Confirmez-vous l’insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
     
            i = WorksheetFunction.CountA(Range("A:A")) + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
     
            MsgBox i
     
            Sheets("Reservations").Range("A" & i).Value = UserForm1.TextBox1.Value
     
            Sheets("Reservations").Range("B" & i).Value = UserForm1.TextBox2.Value
     
            Sheets("Reservations").Range("C" & i).Value = DateSerial(UserForm1.ComboBox7.Value, UserForm1.ComboBox6.Value, UserForm1.ComboBox5.Value)
     
            Sheets("Reservations").Range("D" & i).Value = UserForm1.TextBox4.Value
     
            Sheets("Reservations").Range("E" & i).Value = UserForm1.TextBox5.Value
     
            Sheets("Reservations").Range("F" & i).Value = UserForm1.ComboBox4.Value
     
            Sheets("Reservations").Range("G" & i).Value = DateSerial(UserForm1.ComboBox3.Value, UserForm1.ComboBox2.Value, UserForm1.ComboBox1.Value)
     
            Sheets("Reservations").Range("H" & i).Value = UserForm1.ComboBox8.Value
     
            Sheets("Reservations").Range("I" & i).Value = UserForm1.ComboBox9.Value
     
            Sheets("Reservations").Range("E" & i).NumberFormat = "00\.00\.00\.00\.00"
     
            Sheets("Reservations").Range("H" & i).NumberFormat = "00\H00"
     
            Sheets("Reservations").Range("I" & i).NumberFormat = "00\H00"
     
            Sheets("Reservations").Range("G" & i).NumberFormat = "dd mmmm yyyy"
     
            Sheets("Reservations").Range("C" & i).NumberFormat = "dd\/mm\/yyyy"
     
        End If
    Voir le résultat :
    Nom : Sans titre.jpg
Affichages : 653
Taille : 308,8 Ko

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    J'ai essayé d'appliquer ce que tu m'avais dis Menhir, mais le problème maintenant c'est que j'arrive pas à incrémenter les valeurs de mon Userform sur la première ligne vide de mon tableau à partir de la ligne 10.

    Mon code me permet de trouver la première ligne vide qui est 11, Très bien. Sauf qu'il n'affiche rien sur Excel.

    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
     If MsgBox("Confirmez-vous l’insertion de cette nouvelle commande ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
    Unload Me
     
    If Worksheets("COMMANDES").Range("A10") = "" Then
            i = 10
            Else
             i = Worksheets("COMMANDES").Range("A65535").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
        End If
            MsgBox i
     
            Sheets("COMMANDES").Range("A" & i).Value = UserForm3.TextBox1.Value
     
            Sheets("COMMANDES").Range("B" & i).Value = UserForm3.TextBox2.Value
     
            Sheets("COMMANDES").Range("C" & i).Value = UserForm3.ComboBox1.Value
     
            Sheets("COMMANDES").Range("D" & i).Value = UserForm3.ComboBox2.Value
     
            Sheets("COMMANDES").Range("E" & i).Value = UserForm3.TextBox3.Value
     
            Sheets("COMMANDES").Range("F" & i).Value = UserForm3.TextBox5.Value
     
            Sheets("COMMANDES").Range("G" & i).Value = UserForm3.TextBox6.Value
     
            Sheets("COMMANDES").Range("J" & i).Value = UserForm3.TextBox4.Value
     
            Sheets("COMMANDES").Range("K" & i).Value = UserForm3.ComboBox9.Value
     
            Sheets("COMMANDES").Range("L" & i).Value = UserForm3.ComboBox10.Value
     
            Sheets("COMMANDES").Range("F" & i).NumberFormat = "dd\/mm\/yyyy"
     
            Sheets("COMMANDES").Range("G" & i).NumberFormat = "dd\/mm\/yyyy"
     
     
        End If

  9. #9
    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 Ihaben Voir le message
    Mon code me permet de trouver la première ligne vide qui est 11, Très bien. Sauf qu'il n'affiche rien sur Excel.
    Vérifie le contenu des éléments portant les données que tu veux y inscrire.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Vérifie le contenu des éléments portant les données que tu veux y inscrire.
    Excuse moi, mais j'ai pas compris !!!

  11. #11
    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
    Tu essayes de mettre dans des cellules des valeurs qui sont supposées être contenues dans des éléments de formulaire UserForm3.TextBox1, UserForm3.TextBox2, etc.
    Commence par vérifier si ces éléments contiennent bien des valeurs au moment où tu veux les transférer.

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

Discussions similaires

  1. [XL-2010] copy dans première cellule vide
    Par patapman dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/01/2016, 12h39
  2. [XL-2007] Copier/coller d'une date dans la première cellule vide
    Par AntMi dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/07/2014, 15h31
  3. FormulaR1C1 dans vba et cellule vide
    Par primax dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/07/2007, 19h10
  4. [MySQL] Enregistrer Infos Formulaire dans Bdd
    Par jakkihm dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/01/2007, 17h13
  5. Réponses: 7
    Dernier message: 11/09/2006, 11h33

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