Enregistrement données dans tableau

Bonjour à tous,

j'ai crée un bouton " Éditer la demande". Il renvoie des données surlignées en jaune de la feuille "Demande vers la feuille "Liste".

Problème , car je voudrais que ces données arrivent directement dans mon tableau 1.

Dans mon cas elles arrivent juste en dessous.Je n'arrive pas à paramétrer correctement la macro pour qu'elles soient intégrées directement dedans.

Deuxième problème, si je sélectionne mes informations dans la feuille "Demande " avec une liste déroulante, la copie de ces données ne se fait pas quand j'actionne mon bouton. Je dois les écrire manuellement.

Merci pour vos suggestions.

11transfert.xlsm (50.92 Ko)

Bonjour

Problème , car je voudrais que ces données arrivent directement dans mon tableau 1.

Dans mon cas elles arrivent juste en dessous.

je ne comprends pas trop le en dessous... mais bon essayez le code ci-dessous

Sub Incrementation()

Dim fb As Worksheet, fs As Worksheet, cell As Range
Dim i As Integer, lgn As Integer, derln As Integer, k As Integer
Dim colB As Byte, colS As Byte, ln As Byte

Set fb = Sheets("Demande")

With fb
    If .Range("D3").Value = "" Then
        MsgBox "Merci de renseigner votre Prénom"

    Else
        Set fs = Sheets("Liste")

        derln = .Range("A" & .Rows.Count).End(xlUp).Row
        If derln = 8 Then derln = 9
        For i = 9 To derln
            lgn = fs.Range("A" & fs.Rows.Count).End(xlUp).Row + 1
            For k = 1 To 10
                colB = Choose(k, 7, 4, 1, 2, 3, 4, 5, 6, 7, 8)
                colS = Choose(k, 1, 2, 5, 6, 7, 8, 9, 10, 11, 12)
                ln = Choose(k, 1, 3, 9, 9, 9, 9, 9, 9, 9, 9, i)
                fs.Cells(lgn, colS) = .Cells(ln, colB)
            Next k
        Next i

        MsgBox "Le bon de commande " & Range("g1") & " a été enregistré."

        .Range("D3").ClearContents
        .Range("A9:H28").ClearContents
        .Range("G1").Value = .Range("G1").Value + 1
    End If
End With
End Sub

Evitez les accents si vous travaillez avec VBA. J'ai enlevé le "é" du nom de la macro

Autre chose, veillez à mettre le nom de votre feuille devant les ROWS.COUNT, sans quoi excel pourrait dans certains cas vous renvoyer autre chose.

Si ok, merci de cloturer le fil en cliquant sur le petit v en haut à droite

Crdlt

J'ai essayé le code, mais il ne répond pas ma problématique.

Pour être plus clair, je voudrais que les données soient enregistrées dans le tableau qui est inséré dans la feuille Liste. Le tableau a pour nom tableau 1.Avec ce code les donnees arrivent dans la ligne 3 qui se situe en dessous de mon tableau

Re

Pour être plus clair, je voudrais que les données soient enregistrées dans le tableau qui est inséré dans la feuille Liste. Le tableau a pour nom tableau 1.Avec ce code les donnees arrivent dans la ligne 3 qui se situe en dessous de mon tableau

Si je comprends bien, modifiez cette ligne dans le code :

lgn = fs.Range("A" & fs.Rows.Count).End(xlUp).Row

Cordialement

Merci pour vos réponses. C'est presque çà, mais je pourrais avoir une demande avec plusieurs lignes à enregistrer depuis le tableau dit "classique" sur la feuille "Demande" vers le tableau structuré de la feuille "Liste". Ma mise en page peut prendre de la ligne 9 à la ligne 28.

Bonjour

Essayez comme ceci :

Sub Incrementation()

Dim fb As Worksheet, fs As Worksheet, cell As Range
Dim i As Integer, lgn As Integer, derln As Integer, k As Integer
Dim colB As Byte, colS As Byte, ln As Byte

Set fb = Sheets("Demande")

With fb
    If .Range("D3").Value = "" Then
        MsgBox "Merci de renseigner votre Prénom"

    Else
        Set fs = Sheets("Liste")

        derln = .Range("A" & .Rows.Count).End(xlUp).Row
        If derln = 8 Then derln = 9
        For i = 9 To derln
            lgn = fs.Range("A:N").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
            For k = 1 To 10
                colB = Choose(k, 7, 4, 1, 2, 3, 4, 5, 6, 7, 8)
                colS = Choose(k, 1, 2, 5, 6, 7, 8, 9, 10, 11, 12)
                ln = Choose(k, 1, 3, i, i, i, i, i, i, i, i, i)
                fs.Cells(lgn, colS) = .Cells(ln, colB)
            Next k
        Next i

        MsgBox "Le bon de commande " & Range("g1") & " a été enregistré."

        .Range("D3").ClearContents
        .Range("A9:H28").ClearContents
        .Range("G1").Value = Sheets("Demande").Range("G1").Value + 1
    End If
End With
End Sub

Je n'ai pas trop changé votre code mais on pourrait faire plus simple en évitant les boucles. Par exemple en copiant les lignes en vrac depuis la feuille demande vers la feuille Liste

Crdlt

Merci c'est parfait

Bonsoir,

Juste une question concernant cette ligne :

ln = Choose(k, 1, 3, i, i, i, i, i, i, i, i, i)

Pourquoi "i" est pas des chiffres.Je ne vois pas à quoi le i renvoie.

Merci par avance.

Re,

Pourquoi "i" est pas des chiffres.Je ne vois pas à quoi le i renvoie.

la valeur i dans Choose correspond à la valeur de i dans la boucle For i = 9 to derln pour que ln varie aussi et ne reste pas sur 9 comme vous aviez dans votre code précédent.

Crdlt

Rechercher des sujets similaires à "enregistrement donnees tableau"