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

XL 2019 Pb enregistrement sur derniere ligne de tableau

Did25

XLDnaute Occasionnel
Bonjour je suis actuellement sur un problème d'enregistrement de données sur des tableaux ,tout fonctionne très bien sauf l'enregistrement des données sur la dernière ligne vide de mes tableaux ,je ne trouve pas la solution à mon problème ,voici mon code VBA ,merci de bien vouloir me donner la solution

'Procédure validation données

Private Sub cmdbajouter_click()

Dim nbcontrole As Integer
Dim NouvelleLigne As Range
Dim MaFeuille As String

'on récupère le nom de la feuille du menu déroulant
MaFeuille = CboNomFeuille.Value
'on test si la feuille est bien valide
If Me.CboNomFeuille.Value = "" Then

MsgBox "Veuillez sélectionner un cycle de 5 semaines ", vbOKOnly + vbInformation, "Validation"
Exit Sub

End If
'on récupère le nombre de controle dans le usf
nbcontrole = 6
'on se positionne sur la derniere ligne de la table de donnée
Set NouvelleLigne = Sheets(MaFeuille).Cells(Rows.Count, 2).End(xlUp).Offset(1, 1)

For x = 1 To nbcontrole
NouvelleLigne = Me.Controls("Cont" & x).Value
'Me.Cont1.value = format(Me.Cont1.value,"jj/mm/aaaa")
Set NouvelleLigne = NouvelleLigne.Offset(0, 1)
Next x
'on réinitialise les champs du formulaire à vide

For x = 1 To nbcontrole
Me.Controls("Cont" & x).Value = ""
Next x

CboNomFeuille.Value = ""
'on affiche un message de validation de saisie
MsgBox "La validation a bien été envoyé sur la feuille : " & MaFeuille, vbOKOnly + vbInformation, "Validation"


End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Didier, bonjour le forum,

Peut-être comme ça :

VB:
Private Sub cmdbajouter_click()
Dim nbcontrole As Integer 'inutile. ce n'est pas une variable mais une constante écrite en dur !...
Dim NouvelleLigne As Range
Dim MaFeuille As String

If Me.CboNomFeuille.Value = "" Then
    MsgBox "Veuillez sélectionner un cycle de 5 semaines ", vbOKOnly + vbInformation, "Validation"
    Exit Sub
End If

MaFeuille = CboNomFeuille.Value

'on se positionne sur la derniere ligne de la table de donnée
Set NouvelleLigne = Worksheets(MaFeuille).Cells(Rows.Count, 2).End(xlUp).Offset(1, 1)

For x = 1 To 6
    NouvelleLigne.Offset(0, x - 1).Value = Me.Controls("Cont" & x).Value
    'Me.Cont1.value = format(Me.Cont1.value,"jj/mm/aaaa")
Next x

'on réinitialise les champs du formulaire à vide
For x = 1 To 6
Me.Controls("Cont" & x).Value = ""
Next x

CboNomFeuille.Value = ""
'on affiche un message de validation de saisie
MsgBox "La validation a bien été envoyé sur la feuille : " & MaFeuille, vbOKOnly + vbInformation, "Validation"
End Sub
 

Did25

XLDnaute Occasionnel
Bonjour robert je viens d'essayer mais toujours pareil je vous joint le fichier si vous le souhaitez ,peut être que l'erreur est ailleurs.Merci de votre intérêt .
 

Pièces jointes

  • Validation paiements.xlsm
    76.4 KB · Affichages: 6

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Ton problème était de prendre la colonne 2 pour définir la cellule NouvelleLigne. Avec un tableau structuré on est obligé de partir d'en haut pour avoir la première cellule vide sinon on utilise la dernière ligne du tableau. Remplace ton code par :

VB:
Private Sub UserForm_Initialize()
Dim feuille As Worksheet

For Each feuille In Worksheets
Select Case feuille.CodeName 'codename etant le nom de la feuille
    Case "Feuil1", "Feuil2", "Feuil4", "Feuil5", "Feuil6", "Feuil7", "Feuil8"
    Case Else
        Me.CboNomFeuille.AddItem feuille.Name
    End Select
Next feuille
End Sub

Private Sub cmdbquitter_click()
Unload Me
End Sub

Private Sub cmdbajouter_click()
Dim LI As Integer
Dim OD As Worksheet

If Me.CboNomFeuille.Value = "" Then
    MsgBox "Veuillez sélectionner un cycle de 5 semaines ", vbOKOnly + vbInformation, "Validation"
    CboNomFeuille.SetFocus
    Exit Sub
End If
Set OD = Worksheets(CboNomFeuille.Value)
If OD.Range("C2").Value = "" Then
    LI = 2
Else
    OD.ListObjects(1).ListRows.Add
    LI = OD.Range("C1").End(xlDown).Row + 1
End If
For x = 1 To 6
    OD.Cells(LI, x + 2).Value = Me.Controls("Cont" & x).Value
    Me.Controls("Cont" & x).Value = ""
Next x
CboNomFeuille.Value = ""
MsgBox "La validation a bien été envoyé sur la feuille : " & MaFeuille, vbOKOnly + vbInformation, "Validation"
End Sub
 

Did25

XLDnaute Occasionnel
Je t'avoue que je passe beaucoup de temps sur internet et je fait beaucoup d'essais et j'essais de m'appliquer mais la plus grande source d'inspiration se trouve sur le site Excel download ,merci à vous et peut être à bientôt
 

Discussions similaires

Réponses
3
Affichages
530
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…