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 :

problème formulaire de saisie


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
    Enseignant
    Inscrit en
    Mai 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2015
    Messages : 77
    Par défaut problème formulaire de saisie
    Bonjour,

    J'ai un formulaire qui fonctionne correctement. J'ai imaginé que les données saisies puissent être modifiées. J'ai par conséquent créer un autre formulaire identique au premier. Lorsqu'il s'ouvre il y a déjà dedans les données saisies. Il est donc possible de les modifier ou de supprimer des données. Lorsque je valide cela, les données se mettent bien dans la bonne colonne mais à la fin du tableau :/
    C'est assez pénible de se dire qu'il n'y a rien entre la fin du tableau et la dernière donnée saisie mais il ne remonte pas jusqu'à la dernière donnée
    Merci
    Voici 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Private Sub CommandButton1_Click()
    ActiveSheet.Unprotect Password:="toto"
     
          derligne = Feuil1.Range("a33").End(xlUp).Row + 1
          For Each Ctrl In UserForm9.Controls
            Colonne = Val(Ctrl.Tag)
            If Colonne > 0 Then
              Feuil1.Cells(derligne, Colonne) = Ctrl
              derligne = derligne + 1
            End If
          Next
          ActiveSheet.Protect Password:="toto"
          MsgBox "Les modifications ont été enregistrées."
     
          End
        End Sub
     
    Private Sub UserForm_Initialize()
    TextBox1.Value = Feuil1.Range("a3").Value
    TextBox2.Value = Feuil1.Range("a4").Value
    TextBox3.Value = Feuil1.Range("a5").Value
    TextBox4.Value = Feuil1.Range("a6").Value
    TextBox5.Value = Feuil1.Range("a7").Value
    TextBox6.Value = Feuil1.Range("a8").Value
    TextBox7.Value = Feuil1.Range("a9").Value
    TextBox8.Value = Feuil1.Range("a10").Value
    TextBox9.Value = Feuil1.Range("a11").Value
    TextBox10.Value = Feuil1.Range("a12").Value
    TextBox11.Value = Feuil1.Range("a13").Value
    TextBox12.Value = Feuil1.Range("a14").Value
    TextBox13.Value = Feuil1.Range("a15").Value
    TextBox14.Value = Feuil1.Range("a16").Value
    TextBox15.Value = Feuil1.Range("a17").Value
    TextBox16.Value = Feuil1.Range("a18").Value
    TextBox17.Value = Feuil1.Range("a19").Value
    TextBox18.Value = Feuil1.Range("a20").Value
    TextBox19.Value = Feuil1.Range("a21").Value
    TextBox20.Value = Feuil1.Range("a22").Value
    TextBox21.Value = Feuil1.Range("a23").Value
    TextBox22.Value = Feuil1.Range("a24").Value
    TextBox23.Value = Feuil1.Range("a25").Value
    TextBox24.Value = Feuil1.Range("a26").Value
    TextBox25.Value = Feuil1.Range("a27").Value
    TextBox26.Value = Feuil1.Range("a28").Value
    TextBox27.Value = Feuil1.Range("a29").Value
    TextBox28.Value = Feuil1.Range("a30").Value
    TextBox29.Value = Feuil1.Range("a31").Value
    TextBox30.Value = Feuil1.Range("a32").Value
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ton formulaire, à l'initialisation, récupère les données de la colonne A, entre la ligne 3 et 32
    ce qui signifierait que ta base de donnée et structurée en colonne et pas en ligne ?

    au passage, simplification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
        For i = 1 To 30
            Me.Controls("TextBox" & i).Value = Feuil1.Cells(i + 2, 1).Value
        Next i
    End Sub

    ensuite, c'est normal que cela écrive en fin de tableau, c'est ce que tu demandes à VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
    
    ActiveSheet.Unprotect Password:="toto"
    derligne = Feuil1.Range("a33").End(xlUp).Row + 1
    For Each Ctrl In Me.Controls
      Colonne = Val(Ctrl.Tag)
      If Colonne > 0 Then
        Feuil1.Cells(derligne, Colonne) = Ctrl
        derligne = derligne + 1
      End If
    Next
    ActiveSheet.Protect Password:="toto"
    
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2015
    Messages : 77
    Par défaut
    Bonjour et merci pour ta simplification... Quand on ne sait pas faire faut avoir des doigts pour saisir sur le clavler

    Pour le reste j'avoue que je ne comprends pas
    je lui dis bien que ma dernière ligne est celle juste en dessous de la dernière donnée non? et je lui dis bien de se placer là non?

    mon premier userform arrive à l'ouverture du fichier. Il a 30 textbox mais j'en remplis en général que 10 (par exemple). Un peu plus tard dans le temps, on peut imaginer que soit je veux changer une donnée déjà existante soit je veux ajouter une nouvelle donnée. J'ouvre donc mon userform de correction avec le code que j'ai donné ci dessus. je fais ma modif, j'ajoute une ou deux données.... et paf ça ne se met pas à la suite des autres mais sous le tableau....

    Je viens probablement de voir l'erreur.

    J'ai un tableau 2 qui reprend les données saisies dans le tableau 1

    exemple :
    a1(du tableau 2) =tableau1!a1

    j'ai vidé mon tableau 1 donc mon tableau 2 devrait être vide aussi vu la formule ci dessus. Or, il y a des 0 dans mon tableau 2 sur certaines lignes. Ce qui voudrait dire que je vois mon tableau 1 vide alors qu'il ne l'est pas et ce qui expliquerait qu'il place les données en dessous de ces données invisibles qui envoient un 0 dans les cellules de mon tableau 2.

    Qqun a une idée ?

    Quand j'efface une cellule du tableau 1 avec la touche suppr cela efface le contenu bien entendu donc je ne vois plus rien mais dans mon tableau 2 un 0(zéro) apparaît. Je rappelle que dans le tableau 2 il y a (=tableau1!a1 par exemple)

    J'efface avec suppr la cellule a1 du tableau 1 cela renvoie 0 dans la cellule a1 dans le tableau2 ??

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    c'est normal, vide = zéro en Excel …

    Soit désactiver l'affichage des zéros dans les options, soit modifier la formule en testant la valeur si elle est vide ou pas …


    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2015
    Messages : 77
    Par défaut
    oui pardon Marc j'ai été bête avec mon histoire de zéro.

    Je pense avoir compris.
    Je fais pleins de tests en ce moment vu que je suis en train de construire un outil info et qu'il est presque terminé.
    Je renseigne la colonne A à l'aide de mon formulaire avec 30 textbox. J'en renseigne seulement 4 ou 5 parfois. Je fais des tests ailleurs sur la feuille pour voir si tout fonctionne puis quand ça fonctionne je veux tout effacer et remettre à zéro. je reviens donc dans ma colonne A et je supprime les données sans passer par le formulaire. Je les sélectionne et j'appuie sur Suppr.
    Puis je veux refaire des tests donc je réouvre mon formulaire et je saisis à nouveau quelques données dans la colonne A. Et ce que je saisis viens se mettre en dessous de ceux que j'avais effacé précédemment même si les cellules sont vides désormais.
    Je cherche donc à savoir d'où ça vient. Sans savoir d'où ça vient j'ouvre le formulaire qui est donc vide mais je fais suppr dans chaque textbox quand même et je valide.

    Une fois que j'ai fait cela, les cellules sont "réellement" vide et mon formulaire saisie les données dans les bonnes cellules.

    Moralité : il ne faut pas supprimer manuellement des données saisies par un formulaire car cela ne vide pas réellement la cellule? qqun savait cela?

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Moralité : il ne faut pas supprimer manuellement des données saisies par un formulaire car cela ne vide pas réellement la cellule? qqun savait cela?
    Absolument pas, une suppression dans Excel est une suppression ! Alors si les valeurs de tes TexBox vont dans la mauvaise ligne, regarde du coté de la variable qui te sert à définir le n° de ligne pour ça, mets un point d'arrêt dans ton code et survole ta variable avec la souris pour voir sa valeur.

    Hervé.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    S'il s'agit de réaliser un formulaire permettant de créer, modifier, consulter et supprimer les enregistrements d'une liste de données, tu peux t'inspirer de cette contribution USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/07/2010, 13h47
  2. Probléme de formulaire de saisie
    Par Babario dans le forum IHM
    Réponses: 1
    Dernier message: 01/06/2009, 10h32
  3. Réponses: 2
    Dernier message: 11/07/2008, 15h07
  4. Problème formulaire de saisi
    Par 4rocky4 dans le forum Modélisation
    Réponses: 1
    Dernier message: 09/01/2008, 15h38
  5. Réponses: 4
    Dernier message: 20/04/2007, 18h07

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