Copie automatique de ligne et insertion sur 3 feuilles | ||
---|---|---|
Inscription: 29/04/2014
De Nantes
Messages:
4
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 29-04-2014 09h23
Bonjour à tous,
Je suis nouveau ici et je ne maitrise pas vraiment le VBA. Alors je viens vers vous en espérant que quelqu'un puisse nous apporter une solution. Je dis nous, car nous sommes un jeune couple d'auto entrepreneur et j'essaye bien tant que mal d'automatiser notre fichier de compta.
Je vais découper les quelques problèmes 1 par 1 car je n'arrive pas à extraire qu'une seule partie de mon fichier pour le mettre en exemple sachant que notre compta est déjà en partie saisie.
J'ai 3 onglets nommés "Achats", "Ventes" et "Stock"
Les deux premières colonnes de chaque feuille doit être strictement identique à partir de la ligne 2. La colonne "A" est nommée "Fournisseurs" et la colonne "B" est nommée "Références" Après les autres colonnes de chaque feuilles ont des données plus ou moins liés avec d'autres feuilles du classeur.
A savoir que la feuille de référence pour la liste des fournisseurs et des références est la feuille "Achats".
Comment serait-il possible d'insérer une nouvelle référence ou fournisseur en fin de liste sur la feuille "Achats" et que celle-ci aille s'insérer automatiquement par ordre alphabétique en créant une nouvelle ligne dans la liste de la feuille "Achats" mais également les feuilles "Ventes" et "Stock" tout en conservant les données déjà existante de chaque référence sur chaque feuille ?
En espérant que la description du problème a été clairement exposé.
Cordialement, |
|
|
Re: Copie automatique de ligne et insertion sur 3 feuilles | ||
---|---|---|
Inscription: 29/04/2014
De Nantes
Messages:
4
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 01-05-2014 18h17
Bonjour à tous,
Alors j'ai trouvé un petit code sympa en vba qui permet de trier la feuille "Achats" par fournisseur et référence_produit, tout en conservant les données des autres colonnes attribués à chaque produit.
Private Sub Worksheet_Change(ByVal Target As Range)
Comment pourrais-je faire pour que lorsque j'ajoute une nouvelle référence en fin de liste sur la feuille "Achats" (celle-ci va se trier automatiquement après enter), cette nouvelle référence s'ajoute également sur les feuilles "Ventes" et "Stock" avec la même fonction de tri automatique et de conservation des données des autres colonnes.
Cordialement, |
|
|
Re: Copie automatique de ligne et insertion sur 3 feuilles | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 03-05-2014 12h56
Bonjour Jer31, bienvenue sur XLpages.com
Je pense que la façon de trier ta feuille "à la volée" (à chaque modification d'une cellule de la feuille Achats) comme tu le présentes, c'est bien... Mais si tu insères un code pour recopier les données sur les autres feuilles, tu vas vite te confronter à un problème logique : que va-t'il se passer si tu opères une simple modification de cellule dans la feuille et non un Ajout ? Tu risques fort de te retrouver avec des tris non souhaités, voire même avec des données recopiées (dupliquées) à tort dans les autres onglets...
Pour ma part, j'ai opté pour un bouton "Nouveau" et un formulaire (userform) te permettant d'ajouter un nouvel item dans cette base et assurer le traitement dans les autres onglets du même coup.
Bien évidemment, c'est une façon de faire, et ce n'est pas forcément LA solution. Tout dépend aussi des éléments dont nous n'avons pas connaissance ici (notamment concernant les autres données non présentées). Il aurait été une bonne idée de présenter un simple classeur exemple présentant l'essentiel de ton problème reconstitué, ce n'est pas compliqué à mettre en oeuvre (et ça m'aurait éviter de le faire à ta place, hein !?)
Voici le code VBA que j'ai utilisé (dans la pièce jointe) :
Private Sub btnValider_Click() If MsgBox("Ajouter ce nouveau produit dans la base ?", vbYesNo, "myDearFriend ! - www.mdf-xlpages.comm") = vbYes Then 'Pour chaque onglet AjouterProduit Sheets("Achats"), txtFournisseur.Text, txtRefProduit.Text AjouterProduit Sheets("Ventes"), txtFournisseur.Text, txtRefProduit.Text AjouterProduit Sheets("Stock"), txtFournisseur.Text, txtRefProduit.Text End If Unload Me End Sub Private Sub btnAnnuler_Click() Unload Me End Sub 'Ne permet la Validation QUE si les zones "Fournisseur" et "Réf Produit" sont complétées Private Sub txtFournisseur_Change() getEnableValid End Sub Private Sub txtRefProduit_Change() getEnableValid End Sub Sub getEnableValid() btnValider.Enabled = txtFournisseur.Text <> "" And txtRefProduit.Text <> "" End Sub CODE DANS UN MODULE STANDARD Option Explicit
' Auteur : Didier FOURGEOT (myDearFriend!) - www.mdf-xlpages.com Sub AffichUsf() usfAchat.Show End Sub Sub AjouterProduit(shCible As Worksheet, Fournisseur As String, RefProduit As String) Dim L As Long 'Ajouter le produit sur la première ligne libre de la feuille With shCible L = Dernlign(shCible) .Cells(L, 1).Value = Fournisseur .Cells(L, 2).Value = RefProduit End With 'Trier la feuille TrierFeuille shCible End Sub Private Function Dernlign(shCible As Worksheet) As Long 'Retourne le numéro de la 1ère ligne libre de la feuille Dim L As Long With shCible L = .Cells(.Rows.Count, 1).End(xlUp).Row End With Dernlign = L + 1 End Function Sub TrierFeuille(shCible As Worksheet) 'Trie la feuille par Fournisseur, puis par Produit With shCible .Range("A2:V1000").Sort Key1:=.Range("A2"), Order1:=xlAscending, _ Key2:=.Range("B2"), Order2:=xlAscending, Header:=xlNo End With End Sub
En espérant que ça puisse t'aider....
Bien cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Copie automatique de ligne et insertion sur 3 feuilles | ||
---|---|---|
Inscription: 29/04/2014
De Nantes
Messages:
4
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 06-05-2014 17h08
Bonjour à tout le forum et à MyDearFriend,
C'est tout simplement phénoménal ... une vraie bombe ton code ...
Sincèrement, j'aurai aimé mettre mon fichier, mais celui-ci contient ma comptabilité et je n'arrive pas à l'épurer proprement car je travaille également sur d'autres onglets afin d'essayer d'optimiser la globalité de ce fichier. De plus par exemple la page "vente" va chercher d'autres informations automatiquement dans les onglets de chaque mois en fonction des références produits.
Je suis entrain de rapatrier mes données sur ton fichier qui est extra, mais il manque des liens avec le fichier original :(. Ah zut, ton fichier avec ces 3 onglets mais remplis de mes données fait 297Ko :(
Sinon, pourrais tu m'aider en privé même si je dois t'envoyer mon fichier global avec mes données personnelles ?
Cordialement,
|
|
|
Re: Copie automatique de ligne et insertion sur 3 feuilles | ||
---|---|---|
Inscription: 29/04/2014
De Nantes
Messages:
4
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 07-05-2014 17h40
Bonjour à tous,
Voilà, j'ai ajouté au fichier de MyDearFriend une simulation de quelques données qui pourrait se trouver pour chaque fournisseur sur chaque onglet. A savoir, que sur les onglets "Ventes" et "Stock", il y a des formules qui sont liés à l'onglet "Achats".
Le problème est que si une nouvelle référence vient s'intégrer au milieu des autres, les formules précédentes sur les onglets "Ventes" et "Stock" restent attachés à ligne -1 de l'onglet "Achats' !!!!
Comment pourrais-je faire pour que les formules restent attachées aux cellules d'origines ?
J'ai attaché le fichier de MyDearFriend avec quelques ajouts pour que vous puissiez simuler le problème.
Ps: MyDearFriend, j'ai juste fait une petite modification à ta bombe (car c'est vraiment une bombe ton fichier) pour le faire démarrer sur chaque onglet en ligne 2. Merci encore pour ton aide. |
|
|