Création de ligne avec VBA

Bonjour à tous,

Voici mon problème. Je suis entrain de faire un tableau excel avec code vba pour le boulot.

Dans le fichier ci-joint, vous trouverez le fichier excel en question.

Lorsque que je clique sur nouveau, une nouvelle ligne se crée. Mais lorsque je clique à nouveau sur nouveau et que la dernière ligne n'est pas complété, celle-ci s'agrandie.

Je souhaiterai donc qu'un message apparaisse en indiquant qu'il faut compléter la ligne vide avant d'en créer une autre.

J'ai essayé différente solution, mais sans succés.

Pouvez-vous m'aider svp.

Cordialement,

Guillaume

14essai.xlsm (149.72 Ko)

Bonjour

Avant de commencer, une première chose est à faire. Supprimer toutes les cellules fusionnées qui n'apporte que des soucis dans les codes VBA. Il n'y aucun intérêt à faire cela dans le fichier je pense

A vous relire

Cordialement

Merci pour ta réponse Dan.

J'ai retirer les cellules fusionnées et effectivement cela va mieux.

Par contre je n'arrive toujours pas a trouver le code qui me permet de mettre un message si la dernière cellule est vide avant de pouvoir en créer une autre.

Bonjour,

Un début de réponse à étudier.

Cdlt.

Merci Jean Eric.

Ton code est pas mal et marche bien.

Par contre je ne suis pas expert en vba, on va dire que je m'en sort pas trop mal.

Donc pourrais-tu m'expliquer ton code stp, afin que je puisse le modifier.

Merci d'avance

Bonjour,

Ci-dessous les procédures commentées.

Tu auras remarqué que le principe est basé sur l'utilisation d'un tableau dynamique (données mises sous forme d'un tableau Excel 2007+).

Cdlt.

Option Explicit

Private Sub cmdAdd_Click()
'Declaration des variables
Dim lo As ListObject    'Tableau1 dans la feuille de calcul (voir gestionnaire ne noms)
Dim lr As ListRow       'Ligne dans un tableau
Dim lRow As Long        'Nombre de lignes du tableau
Dim check As Double     'Nombre de données dans une ligne

    'Initialisation variable Tableau1
    Set lo = Me.ListObjects(1)
    'Nombre de lignes de Tableau1
    lRow = lo.ListRows.Count
    'si Tableau1 comprend des données
    If lo.InsertRowRange Is Nothing Then
        'On s'assure que tous les champs de la dernière ligne sont documentés
        'CountA correspond à la fonction NBVAL()
        check = Application.CountA(lo.ListRows(lRow).Range)
        'Une ou plusieurs données ne sont pas documentées
        If check < 6 Then
            MsgBox "Avant d'insérer une nouvelle ligne, veuillez documenter" & vbLf _
                   & "tous les champs de la ligne précédente.", vbOKOnly + vbCritical
            'On sort de la procédure
            GoTo exit_Handler
        End If
        'Tous les champs de la dernière ligne sont documentés
        'On insere une nouvelle ligne
        Set lr = lo.ListRows.Add(AlwaysInsert:=True)
    Else
        'La première ligne de Tableau1 est vide
        MsgBox "Veuillez documenter tous les champs du tableau.", vbOKOnly + vbCritical
    End If
'On reinitialise les variables
exit_Handler:
    Set lr = Nothing
    Set lo = Nothing

End Sub

Private Sub cmdReset_Click()
'Reinitialisation de Tableau1
'Toutes les données sont supprimées mais on conserve une ligne.
'Les formules et les mises en forme sont conservées.
    With Me.ListObjects(1)
        'Si le tableau comporte des données, on les supprime
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
    End With

End Sub

Super je te remercie

Re,

Merci de clore le sujet.

Cdlt.

Rechercher des sujets similaires à "creation ligne vba"