XL 2019 recopie de cellules par rapport à une autre

Rambaldy

XLDnaute Nouveau
Bonjour,

Je fais actuellement un fichier Excel pour aider mes collaborateurs dans leurs commandes.
J'ai déja créé le plus gros et maintenant je coince sur une de mes idées.
Mon fichier comporte 4 onglets
Le principal est formulaire (là ou on saisie les demande de devis.
Le second (Listing) s'incrémente automatiquement à partir de formulaire lorsque le collaborateur clic sur sauvegarde.
Le troisième (là ou je coince) est Commande. Je souhaiterai à partir de cet onglet rappeler une demande de devis (ce que je fais déja à partir de la cellule F4 avec un rechecheX) et pouvoir compléter la ligne appelée dans listing
Mon but serait d'alimenter Listing à partir de la feuille commande (les cellules B16 et E18) lorsque ceux ci sont renseignées (dans commande), car vide par défaut dans listing, d'où mon idée d'un bouton qui déclencherait la recopie dans la bonne ligne de listing).

Formulaire alimente listing (les datas dans B16 et E18 de commande n'existe pas dans cette feuille). Lorsque l'on souhaite commander, je rappelle la demande dans commande (F4) et je complète B16 et E18 (qui viendrait se copier dans la bonne ligne de listing).
Je joins le fichier pour être plus explicite.
La recopie dans la bonne ligne de listing pourrait être faite avec un bouton macro.
Je suis a dispo pour plus d'explications si je ne suis pas clair.

Cordialement
 

Pièces jointes

  • commandes-de-formes-v2.xlsm
    66.5 KB · Affichages: 10
Solution
Bonsoir à toutes & à tous, bonsoir @Rambaldy
Je ne me suis pas précipité sur ta demande, mais si elle est toujours d'actualité voilà ce que j'ai fait :
  • J'ai transformé ta liste "listing" en un tableau structuré "tbListing" plus facile à manipuler.
  • J'ai créé un feuille "Bon Vierge" qui sert à générer le fichier pdf que je joins aux mail.
  • J'ai créé une feuille "Accueil" avec un formulaire qui permet de visualiser les demandes de devis ou les commandes déjà enregistrées (il y a deux formats conditionnels pour afficher/masquer les informations propres aux bons de commande).
    Sur cette feuille un bouton variable permet de lancer les macros (devis ou commande selon le contexte)
    La protection est activée (sans mot de passe)...

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @Rambaldy
Je ne me suis pas précipité sur ta demande, mais si elle est toujours d'actualité voilà ce que j'ai fait :
  • J'ai transformé ta liste "listing" en un tableau structuré "tbListing" plus facile à manipuler.
  • J'ai créé un feuille "Bon Vierge" qui sert à générer le fichier pdf que je joins aux mail.
  • J'ai créé une feuille "Accueil" avec un formulaire qui permet de visualiser les demandes de devis ou les commandes déjà enregistrées (il y a deux formats conditionnels pour afficher/masquer les informations propres aux bons de commande).
    Sur cette feuille un bouton variable permet de lancer les macros (devis ou commande selon le contexte)
    La protection est activée (sans mot de passe), seuls le choix d'un N° de demande et le bouton macro sont accessibles.
  • Coté VBA j'ai créé un UserForm "UsF_Commande" qui permet d'envoyer une demande de devis ou une commande (selon le contexte).
    Un bouton d'exécution s'affiche lorsque le formulaire est prêt à être expédié. Les informations sont enregistrées dans le listing, et le mail avec sa pièce jointe (en pdf) est préparé (affiché, non expédié)
Regarde le code du module "mdl_AtTheOne" et du Userform "UsF_Commande"
Si nécessaire j'ajouterai des commentaires au code, mais là je suis un peu paresseux.

Regarde la pièce jointe, et fais-moi un retour
Amicalement
Alain
PS : pour le reste de la semaine, je n'aurai que mon téléphone pour répondre, s'il y a des modifications à faire, il faudra patienter un peu plus.
 

Pièces jointes

  • recopie de cellules par rapport à une autre.xlsm
    72.3 KB · Affichages: 4

Rambaldy

XLDnaute Nouveau
Bonjour AtTheOne,

Ouhaaaa !!!!!!!!!
Au delà de mes espérances.
Tu as super bien bossé et remanié mon fichier.
Je n'ai plus grand chose à modifier pour le terminer.
J'étais vraiment partie dans la mauvaise direction et quand je regarde ton code je me rends compte du gap d'optimisation. Le tiens et beaucoup plus optimisé et structuré.

Je voudrais juste comprendre dans ton onglet Tables à quoi correspond le L ou M dans les colonnes devis et commande.
Si j'ai bien vu c'est L pour lock et M pour masqué rien pour modifier le champ mais je n'ai pas trouvé le code qui pilote cela. J'aurai bien rendu le champs date de livraison modifiable au moment de la commande.
J'ai réussi à modifier la condition mais il ne ce change pas dans listing.
Je vais regarder plus en profondeur pour comprendre. Le but étant aussi que je m'améliore ;-)

Vraiment super boulot et encore merci.

Cordialement
Rambaldy
 

Rambaldy

XLDnaute Nouveau
RE AtTheOne,

J'ai trouvé la réponse à ma question.
Vraiment malin pour la mise à jour d'un champ !!
J'ai légèrement modifié ton code et maintenant je peux changer la date de livraison si besoin lorsque l'on passe commande. J'ai ajouté la cellule date_livraison dans ta MaJ du listing. Cela fonctionne et j'espère ne pas détériorer quelque chose. Bien-sur j'ai changé la condition dans ta table.

Tu m'as franchement débloqué dans mon projet et je t'en remercie encore.

Une fois de plus, super boulot.

Cordialement
Rambaldy
 

Rambaldy

XLDnaute Nouveau
Bonjour AtTheOne,
Je te sollicite à nouveau.
Dans mon projet initial j'ai oublié un champ.
J'ai donc ajouté un champ à la suite de ton code mais je bloque sur un petit point.
Ce champ n'est pas repris dans la copie PDF et génère une erreur.
Ou reprends tu la liste des champs à copier dans le PDF? je ne le trouve pas. Je ne vois pas ou tu pointes l'onglet bon vierge pour créer le PDF.
Autre petit point, je ne comprends pas la syntaxe de tes routines change() pour les champs. je suis curieux de comprendre le fonctionnement
Private Sub TBx_Nb_Poses_Change()
If Auto Then Exit Sub
Str_Chk = Mid(Str_Chk, 1, 5) & IIf(Me.TBx_Nb_Poses <> "", "1", "0") & Mid(Str_Chk, 7, 12)
Me.CBn_Excécuter.Visible = Str_Chk = Chk_Ok
End Sub

D'avance merci pour ton retour.

Cordialement
Rambaldy
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonjour @Rambaldy
Je n'ai que mon téléphone jusqu'à dimanche soir. Pour te répondre ce n'est pas coton !
Avant d'afficher le bouton d'exécution je vérifie que les champs nécessaires sont renseignés, comme il y en a une vingtaine, plutôt que de faire autan de tests qu'il y a de champs à chaque changement, j'utilise une chaîne de 0 et de 1, quand le champ est renseigné, je bascule le bit correspondant à 1 sinon à 0, et je reste la chaîne complète.
Si elle ne comporte que des 1 c'est ok, j'affiche le bouton d'exécution, sinon je le masque.
A bientôt
Amicalement
Alain
 

Discussions similaires

Réponses
21
Affichages
881