Copier/Coller un tableau d'une feuille à une autre

Bonjour,

Étant novice en VBA je viens chercher un peu d'aide.

Alors j'aimerais avoir un tableau de suivi de nos achats.

Sur une feuille j'ai alors toutes nos commandes et les factures, et sur les autres feuilles chacun des fabricants.

Au boulot, j'ai réussi à faire une macro qui marche et je ne sais pour quelle raison quand j'ai fait refait un tableau batard (ci-joint) pour ne pas divulguer les infos de l'entreprise ça ne veut pas marcher, vous pourrez peut-être me dire pourquoi.

Mais il me restait deux problèmes:

1) La macro fonctionnait parfaitement pour le fabricant 1 mais pas pour les autres fabricants

2)A chaque fois que je clique sur le bouton pour faire la mise à jour les données se rajoutent à la suite, mais tous se rajoutent de nouveau. Je me retrouve avec pleins de lignes identiques. Je complète le fichier tous les jours. Je voudrais que les lignes de fabricants ne se dupliquent pas. De plus une ligne n'est pas toujours complète même si une autre ligne en dessous l'est, elle sera complétée plus tard.

Voici mon code

Sub selection()

Application.ScreenUpdating = False

Sheets("cmde").Select
Dim Num_Facture As String
Dim Product_name As String
Dim qte_cmde As String
Dim qte_livre As String
Dim lastrow As Long

lastrow = Sheets("cmde").Cells(Rows.Count, 1).End(xlUp).Row
For i = 7 To lastrow

If Cells(i, 7) = “fabricant1” Then
Num_Facture = Sheets("cmde").Cells(i, 5)
Product_name = Sheets("cmde").Cells(i, 2)
qte_cmde = Sheets("cmde").Cells(i, 3)
qte_livre = Sheets("cmde").Cells(i, 6)

Sheets("fabricant1").Activate
erow = Sheets("fabricant1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Sheets("fabricant1").Cells(erow, 1) = Num_Facture
Sheets("fabricant1").Cells(erow, 2) = Product_name
Sheets("fabricant1").Cells(erow, 3) = qte_cmde
Sheets("fabricant1").Cells(erow, 4) = qte_livre

ElseIf Cells(i, 7) = “fabricant2” Then
Num_Facture = Sheets("cmde").Cells(i, 5)
Product_name = Sheets("cmde").Cells(i, 2)
qte_cmde = Sheets("cmde").Cells(i, 3)
qte_livre = Sheets("cmde").Cells(i, 6)

Sheets("fabricant2").Activate
erow = Sheets("fabricant2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Sheets("fabricant2").Cells(erow, 1) = Num_Facture
Sheets("fabricant2").Cells(erow, 2) = Product_name
Sheets("fabricant2").Cells(erow, 3) = qte_cmde
Sheets("fabricant2").Cells(erow, 4) = qte_livre

End If

Next i

Application.ScreenUpdating = True

End Sub

Je suis désolée si j'ai pas été claire et remercie tous ceux qui essayeront de m'aider.

13suivi.xlsm (20.77 Ko)

Bonsoir,

Ci-joint une proposition à tester.

  • les onglets créés se basent sur un onglet "Modèle" masqué.
  • les onglets sont supprimés et recréés à chaque nouveau lancement

Bonne soirée

Bouben

22suivi-v0-1.xlsm (35.28 Ko)

Ça à l'air parfait. Merci beaucoup!

Je teste ça au bureau demain et je vous tiens au courant.

Excusez moi j'avais oublié un autre détail, sur ce fichier j'ai trois autres onglets qui ne sont pas du copier coller de la page cmde. Est ce que ces onglets risque d'être supprimés?

Bonsoir,

Les noms d'onglets reprennent les noms des fabricants (colonne G du fichier de commande).

A chaque nouveau lancement sont supprimés tous les onglets correspondants à ces noms, avant d'être recréés avec les nouvelles données.

Les autres onglets ne sont donc pas supprimés.

A tester !

Bonne soirée

Bouben

Effectivement après test l'onglet est conservé.

Malheureusement je n'ai pas réussi à faire marcher la macro sur le tableau au bureau.

J'ai du coup récupéré un petit bout du tableau (ci-joint)

De plus j'avais oublié quelques détails, il faudrait pouvoir ajouter 3 colonnes à chaque fabricant que je remplirais manuellement. Et que l'une des 3 colonnes (lieu de livraison) crée un nouvel onglet si il est stocké dans notre entrepôt.

Merci encore pour votre aide.

16test.xlsm (25.70 Ko)

Personne pour m"aider, svp?

Rechercher des sujets similaires à "copier coller tableau feuille"