Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Décalage de ligne lors de la saisie

Marvin57

XLDnaute Occasionnel
Bonjour à tout le monde,

j'ai un petit soucis lors de la saisie et validation de mes données vers un tableau structuré.

C'est à dire :

Lorsque je saisi les données dans mon userform et que je clique sur valider, il me m'inscrit les données à la suite de mon tableau structuré au lieu de le faire une ligne au dessus.

Voici le code qui sert à valider cela.

J'espère que cela va vous aider à comprendre mon problème car mon fichier est très volumineux et difficile a transmettre.

Le tableau structuré de l'onglet "POINTS" se nomme "Tableau28" si vous avez besoin de cette info.
Le tableau "Tableau28" démarre à la ligne A2 de l'onglet "POINTS".

Private Sub VALIDATION_Click() 'Valider l'enregistrement des points saisis
Dim Wtc As Worksheet
Application.ScreenUpdating = False
Set Wtc = Sheets("POINTS")
If VALIDATION.Caption = "VALIDER" Then
Dl = Wtc.Range("A" & Rows.Count).End(xlUp).Row + 1
If Dl = 2 Then
Wtc.Cells(Dl, 1).Value = 1
Else
Wtc.Cells(Dl, 1).Value = Application.WorksheetFunction.Max(Wtc.Range("A2:A" & Dl).Value) + 1
End If
Wtc.Cells(Dl, 2).Value = CDate(Me.TextBox1.Value)
Wtc.Cells(Dl, 2).NumberFormat = "m/d/yyyy"
Wtc.Cells(Dl, 3).Value = CDate(Me.TextBox2.Value)
Wtc.Cells(Dl, 3).NumberFormat = "m/d/yyyy"
Wtc.Cells(Dl, 4).Value = CDate(Me.TextBox3.Value)
Wtc.Cells(Dl, 4).NumberFormat = "m/d/yyyy"
Wtc.Cells(Dl, 5).Value = Me.ComboBox1.Value
Wtc.Cells(Dl, 6).Value = Me.ComboBox2.Value
Wtc.Cells(Dl, 7).Value = Me.ComboBox3.Value
Wtc.Cells(Dl, 8).Value = Me.TextBox4.Value
If Me.OptionButton1 = True Then Wtc.Cells(Dl, 9).Value = Me.TextBox5.Value
If Me.OptionButton2 = True Then Wtc.Cells(Dl, 10).Value = Me.TextBox5.Value

Actualiser_Affiche
MsgBox " Points enregistrés"
Else
Dl = Wtc.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To Dl
If Me.lbltc.Caption = Wtc.Cells(i, 1).Value Then
Wtc.Range(Wtc.Cells(i, 2), Wtc.Cells(i, 10)) = ""
Wtc.Cells(i, 2).Value = CDate(Me.TextBox1.Value)
Wtc.Cells(i, 2).NumberFormat = "m/d/yyyy"
Wtc.Cells(i, 3).Value = CDate(Me.TextBox2.Value)
Wtc.Cells(i, 3).NumberFormat = "m/d/yyyy"
Wtc.Cells(i, 4).Value = CDate(Me.TextBox3.Value)
Wtc.Cells(i, 4).NumberFormat = "m/d/yyyy"
Wtc.Cells(i, 5).Value = Me.ComboBox1.Value
Wtc.Cells(i, 6).Value = Me.ComboBox2.Value
Wtc.Cells(i, 7).Value = Me.ComboBox3.Value
Wtc.Cells(i, 8).Value = Me.TextBox4.Value
If Me.OptionButton1 = True Then Wtc.Cells(i, 9).Value = Me.TextBox5.Value
If Me.OptionButton2 = True Then Wtc.Cells(i, 10).Value = Me.TextBox5.Value
Actualiser_Affiche
RAZ
Exit For
End If
Next
Me.LblTypeConge = "Points donnés "
Me.OptionButton1 = True
VALIDATION.Caption = "VALIDER"
VALIDATION.BackColor = &HFF00&
MsgBox " Points donnés modifiés"
End If


End Sub

Merci d'avance à vous pour vos infos et rectifications.

Marvin57
 

Marvin57

XLDnaute Occasionnel
Super votre calendrier.
En ce qui concerne le bouton quitter, je l'ai rajouté car dans mon fichier je me sert autrement du calendrier.

A+
 

Marvin57

XLDnaute Occasionnel
Bonjour vgendron,

Merci pour ton travail sur le code dans ma demande.

Alors, il m'inscrit bien tout dans le tableau maintenant.

Et oui, moi j'ai oublié de mentionner que le bouton valider peut changer en modifier !!! Vraiment désolé pour cet oubli !!!

Est-il possible de modifier cela SVP ?

Merci à vous
 

vgendron

XLDnaute Barbatruc
modifier quoi??
à quel moment ton bouton passe en "modifier"??

je faisais juste remarquer que dans ton fichier, le bouton est TOUJOURS en "valider"..
donc le test if bouton.caption="Valider" else.... ne sert pas à grand chose en l'état..
 

vgendron

XLDnaute Barbatruc
après.. valider ou modifier. le texte du bouton.. on s'en fout un peu..
quand tu fais le test, si trouve is nothing.. ca veut dire que c'est une nouvelle ligne
si NOT trouve is nothing, ca veut dire que tu modifies une ligne existante...
 

Marvin57

XLDnaute Occasionnel
Bon, l'ai pas encore testé, mais écrit selon ce que je voyais …
Bonjour Dranreb,

Merci pour le retour mais cela ne fonctionne pas !!
après.. valider ou modifier. le texte du bouton.. on s'en fout un peu..
quand tu fais le test, si trouve is nothing.. ca veut dire que c'est une nouvelle ligne
si NOT trouve is nothing, ca veut dire que tu modifies une ligne existante...
Re,
OK, alors vous me conseillez quoi ? de mettre un autre bouton pour modifier si besoin ?
 

vgendron

XLDnaute Barbatruc
pas besoin d 'un autre bouton

celui qui existe, tu mets "Enregistrer"
et le code

VB:
Private Sub VALIDATION_Click() 'Valider l'enregistrement des congés saisis
    Dim Wtc As Worksheet
    Application.ScreenUpdating = False
    
    Set Wtc = Sheets("POINTS")
    With Wtc.ListObjects(1)
        Set trouve = .ListColumns(1).Range.Find(Me.lbltc.Caption, lookat:=xlWhole)
        If Not trouve Is Nothing Then
            ligne = trouve.Row - .Range.Row
            Message = "Points de l'élève modifiés"
        Else
            .ListRows.Add
            ligne = .ListRows.Count
            Message = "Points demandés enregistrés"
        End If

        .DataBodyRange(ligne, 1) = WorksheetFunction.Max(.ListColumns(1).DataBodyRange) + 1
        .DataBodyRange(ligne, 2).Value = CDate(Me.TextBox1.Value)
        .DataBodyRange(ligne, 2).NumberFormat = "m/d/yyyy"
        .DataBodyRange(ligne, 3).Value = CDate(Me.TextBox2.Value)
        .DataBodyRange(ligne, 3).NumberFormat = "m/d/yyyy"
        .DataBodyRange(ligne, 4).Value = CDate(Me.TextBox3.Value)
        .DataBodyRange(ligne, 4).NumberFormat = "m/d/yyyy"
        .DataBodyRange(ligne, 5).Value = Me.ComboBox1.Value
        .DataBodyRange(ligne, 6).Value = Me.ComboBox2.Value
        .DataBodyRange(ligne, 7).Value = Me.ComboBox3.Value
        .DataBodyRange(ligne, 8).Value = Me.TextBox4.Value
        If Me.OptionButton1 = True Then .DataBodyRange(ligne, 9).Value = Me.TextBox5.Value
        If Me.OptionButton2 = True Then .DataBodyRange(ligne, 10).Value = Me.TextBox5.Value
    End With
    MsgBox Message
    Me.LblTypePoints = "Points payés "
    Me.OptionButton1 = True
    VALIDATION.Caption = "VALIDER"
    VALIDATION.BackColor = &HFF00&

    Sheets("POINTS").Activate
    Application.ScreenUpdating = True
    Unload Me
    
End Sub
 

Marvin57

XLDnaute Occasionnel
Re,
Merci à vous vgendron.
Cela fonctionne comme voulu.

Oui, quand je sélectionne des données de la listbox, elles sont chargées. Mais cela fonctionne.
Je vais faire une série de test et je reviendrai ce soir.
 

Discussions similaires

Réponses
17
Affichages
359
Réponses
5
Affichages
419
Réponses
4
Affichages
221
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…