XL 2019 User Form qui renvoi dans un tableau avec celulle fusionnée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ciarab8442

XLDnaute Nouveau
Bonjour à tous

Je vous sollicite de nouveau car j’aimerais ajuster un travail que @Piment a réalisé avec beaucoup de soin .

Je viens de terminer certaines mises en forme et mises à jour.

Dans le UserForm, j’ai pu régler les renvois d’informations sur le nom du client, l’adresse, le code postal, etc. (Qui se réalisé avec un décalage), et effectuer quelques modifications mineures.

Cependant, je souhaiterais que les informations ne soient pas renvoyées dans le bon de livraison, mais dans le bon de livraison1. Pour les mises en forme , je souhaite rester fortement sur le modèle du bon de livraison1
Sachant que la partie du bon de livraison me va bien sur les lignes qui s'automatise. (si ça pouvait se faire le le B

Après quelques recherches et essais, j’ai tenté le code suivant, mais cela ne fonctionne pas correctement.


Est ce que je dois dois-je rester avec un tableau de lignes non fusionnées, sans retour à la ligne automatique, tout en conservant les trois colonnes comme je le souhaite. Ou il y a t'il une autres astuce . Du type chercher le nombre de ligne active (tableau bon de livraison) et de copier de la première à la dernière dans le tableau du bon de livraison 2 et passer par un masquage de ligne pour les lignes non complétées ?

Merci pour votre aide.






VB:
Public Sub RemplirBonDeLivraison1()
    Dim wsSrc As Worksheet
    Dim wsDest As Worksheet
    Dim Tbl As ListObject
    Dim i As Long, destRow As Long
   
    ' Feuilles
    Set wsSrc = ThisWorkbook.Sheets("Bon de Livraison")
    Set wsDest = ThisWorkbook.Sheets("Bon de Livraison1")
   
    '-------------------------------
    '  Supprimer mise en forme et contenu lignes 1 à 12
    With wsDest.Rows("1:12")
        .ClearFormats
        .ClearContents
    End With
   
    '-------------------------------
    '  Écrire les informations principales dans les cellules fusionnées
   
    ' Numéro du Bon de Livraison -> F8:I8
    wsDest.Range("F8:I8").Merge
    wsDest.Range("F8").Value = Me.Txt_NumBon.Value
   
    ' Date -> F9:I9
    wsDest.Range("F9:I9").Merge
    wsDest.Range("F9").Value = Me.Txt_Date.Value
   
    ' Lieu -> F10:I10
    wsDest.Range("F10:I10").Merge
    wsDest.Range("F10").Value = Me.Cbx_Lieu.Value
   
    ' Informations client
    wsDest.Range("P8:U8").Merge
    wsDest.Range("P8").Value = Me.Txt_NomEntreprise.Value
   
    wsDest.Range("P9:U9").Merge
    wsDest.Range("P9").Value = Me.Txt_Adresse.Value
   
    wsDest.Range("P10:U10").Merge
    wsDest.Range("P10").Value = Me.Txt_CodeP.Value & " " & Me.Txt_Ville.Value
   
    '-------------------------------
    ' Transférer le tableau A:G à partir de B13
    Set Tbl = wsSrc.ListObjects("Tbl_BonLivraison")
   
    For i = 1 To Tbl.ListRows.Count
        destRow = 12 + i ' ligne de départ = 13
       
        ' Colonne A -> B:C
        wsDest.Range("B" & destRow & ":C" & destRow).Merge
        wsDest.Range("B" & destRow).Value = Tbl.DataBodyRange.Cells(i, 1).Value
       
        ' Colonne B -> D:E
        wsDest.Range("D" & destRow & ":E" & destRow).Merge
        wsDest.Range("D" & destRow).Value = Tbl.DataBodyRange.Cells(i, 2).Value
       
        ' Colonne C -> F:G
        wsDest.Range("F" & destRow & ":G" & destRow).Merge
        wsDest.Range("F" & destRow).Value = Tbl.DataBodyRange.Cells(i, 3).Value
       
        ' Colonne D -> H:J
        wsDest.Range("H" & destRow & ":J" & destRow).Merge
        wsDest.Range("H" & destRow).Value = Tbl.DataBodyRange.Cells(i, 4).Value
       
        ' Colonne E -> K:L
        wsDest.Range("K" & destRow & ":L" & destRow).Merge
        wsDest.Range("K" & destRow).Value = Tbl.DataBodyRange.Cells(i, 5).Value
       
        ' Colonne F -> N:Q
        wsDest.Range("N" & destRow & ":Q" & destRow).Merge
        wsDest.Range("N" & destRow).Value = Tbl.DataBodyRange.Cells(i, 6).Value
       
        ' Colonne G -> R:S
        wsDest.Range("R" & destRow & ":S" & destRow).Merge
        wsDest.Range("R" & destRow).Value = Tbl.DataBodyRange.Cells(i, 7).Value
    Next i
   
    '-------------------------------
    ' Transférer les informations B19 -> E34 et B20 -> E35
    wsDest.Range("E34").Value = Me.Txt_FonctionResp_Entreprise.Value
    wsDest.Range("E35").Value = Me.Txt_FonctionResp_Destinataire.Value
End Sub

'=======================================================
' Exemple d'appel dans le bouton Valider
'=======================================================
Private Sub Cdb_Valider_Click()
    ' Remplir Bon de Livraison1 avec toutes les infos
    RemplirBonDeLivraison1
   
    MsgBox "Bon de Livraison1 mis à jour avec succès !", vbInformation
End Sub
 

Pièces jointes

Dernière édition:
Hello,

Je ne saurais t'aider car c'est trop compliqué pour moi, mais je peux déjà te dire que la façon dont est construite la feuille "Bon de Livraison1" ne pourra que t'apporter des ennuis.

Beaucoup de colonnes ne servent à rien, il faudrait les supprimer pour éviter au maximum de fusionner des cellules.
Le plus flagrant ce sont les colonnes C, G, I, ... Q, S, U. Mais il y en a d'autres qui doivent être tout aussi inutiles et potentiellement problématiques.


Bon week-end
🖖
 
Bonjour
Je ne vois pas de macro: RemplirBonDeLivraison1...
J'ai modifier la macro: Sub Cdb_Enregistrer_Click pour que l'enregistrement ce fasse sur la feuille Bon de livraison1...

A+ François
ps: je ne vois pas l'utilité des cellules fusionnées ...
 

Pièces jointes

Dernière édition:
Bonjour
Je ne vois pas de macro: RemplirBonDeLivraison1...
J'ai modifier la macro: Sub Cdb_Enregistrer_Click pour que l'enregistrement ce fasse sur la feuille Bon de livraison1...

A+ François
ps: je ne vois pas l'utilité des cellules fusionnées ...
Bonsoir à tous.
Ciarab8442, le fichier que je vous ai fourni était un fichier réalisé par rapport à ce que j'avais compris de votre demande.

Vu votre fichier transmis sur ce fil, il faut adapter en fonction des éléments que vous avez fournis.

Un conseil :
1°) Il faut travailler à partir de tableau structuré : meilleur moyen de ne pas avoir de problème.

2°) Avoir des colonnes fusionnées sur la feuille n'est pas un problème, par contre avoir des colonnes fusionnées dans un tableau, c'est source de problèmes et compliqué à gérer. Donc pas de colonnes fusionnées dans le tableau.

Dans mon fichier, tous les tableaux sont des tableaux structurés.

Pour envisager l'adaptation à votre "Bon de livraison", certains points sont à éclaircir :
1°) Vous avez modifié le tableau de la "Liste des articles" en rajoutant une colonne "Qté Op" : cela correspond à quoi ?
2°) La partie haute ( cellules B:I de la ligne 2) de votre "Bon de livraison" reçoit quoi comme données ? Idem pour le reste.
3°) Pouvez-vous nous expliquer pourquoi vouloir réécrire le nom de la société dans le cadre "Réception". Le nom apparait déjà en haut (Client").
Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
Réponses
48
Affichages
6 K
Ananas94
A
Y
Réponses
0
Affichages
754
yuplop
Y
S
Réponses
3
Affichages
841
steve1991
S
B
Réponses
8
Affichages
1 K
B
S
Réponses
5
Affichages
1 K
sianurr
S
H
  • Question Question
Réponses
18
Affichages
14 K
Hollowman06
H
P
Réponses
0
Affichages
965
Plukrax
P
N
Réponses
5
Affichages
2 K
N
Retour