VBA transfère de données d'une feuille à une autre

sarah33

XLDnaute Junior
Bonjour le forum,

J'ai 2 feuilles:
  • Action
  • MOUVEMENT STOCKL

Nous retrouvons les mêmes données dans les 2 feuilles.
J'utilise la feuille Action pour saisir mes Commandes ou mes Ventes.
Lorsque la saisie est terminée (dans la plage jaune), j'aimerai que lorsque je clique sur un des 2 boutons (Vente/Commande), alors les données de la plage jaune viennent s'ajouter après la dernière ligne de la feuille Mouvement Stock.
Lorsque le bouton Commande est sélectionné, alors les données de la colonne (D) Quantité, se mettent dans colonne (E)de la feuille Mouvement Stock : Quantité Commandé ; et lorsque le bouton Vente est selectionné alors données de la colonne (D) Quantité vont dans la colonne (D) de Mouvement Stock : Quantité Vente.

Pourriez-vous m'aider car mes connaissances en VBA m'empechent d'aller plus loin :(

Merci d'avance !

Sarah
 

Pièces jointes

  • Sarah 1.xlsx
    22.1 KB · Affichages: 27
  • Sarah 1.xlsx
    22.1 KB · Affichages: 38
  • Sarah 1.xlsx
    22.1 KB · Affichages: 39

titiborregan5

XLDnaute Accro
Re : VBA transfère de données d'une feuille à une autre

Bonjour Sarah, le forum,

qu'est ce qui te bloque en VBA?
j'imagine que c'est le "écrire après la dernière ligne remplie"?
Voici comment faire en vba pour écrire dans la 1ère ligne vide; on considérera dans ton exemple que la colonne toujours remplie est la colonne B (ref):
VB:
Range("B1").end(xldown).offset(1,0) 'te permet d'écrire à la 1ère ligne vide! 
'On aurait pu partir du bas et remonter en faisant :
range("B100000").end(xlup).offset(1,0)

Le end et sa direction te renvoie sur la dernière valeur (équivaut à ctrl+ haut / bas / droite / gauche)!
Le offset(ligne, colonne) te décale du nombre indiqué (-1 en haut, 1 en bas / -1 à gauche, 1 à droite)!

En espérant que ça t'aide, le reste ne devant pas être bien compliqué!

Bon courage!

Tibo
 

FROLLINDE

XLDnaute Occasionnel
Re : VBA transfère de données d'une feuille à une autre

Bonjour, Sarah, Bonjour Forum,

Au lieu d'avoir 2 boutons, peut qu'une option de saisie Commandes ou Ventes serait plus approprié.

Ensuite dans la macro gérer conditionnellement si Commande ou Ventes.

la MACRO

Sub copieaction()
'
' Macro2 Macro
'

'
Dim nligne As Integer

Sheets("MOUVEMENT STOCK").Select
Range("B1").Select
Selection.End(xlDown).Select
nligne = ActiveCell.Row + 1

Sheets("Action").Select
Range("A6:C45").Copy

Sheets("MOUVEMENT STOCK").Select
Range("A" & nligne).Select
ActiveSheet.Paste

Sheets("Action").Select
Range("E6:H45").Copy

Sheets("MOUVEMENT STOCK").Select
Range("F" & nligne).Select
ActiveSheet.Paste


Sheets("Action").Select
Range("D6:D45").Copy
Sheets("MOUVEMENT STOCK").Select
If Range("Action!D3").Value = "Ventes" Then
Range("D" & nligne).Select
ActiveSheet.Paste
Else
Range("E" & nligne).Select
ActiveSheet.Paste
End If
Sheets("Action").Select

End Sub


fichier joint en XLSM.

Cordialement,
 

Pièces jointes

  • Sarah 1.xlsm
    30.5 KB · Affichages: 33

sarah33

XLDnaute Junior
Re : VBA transfère de données d'une feuille à une autre

Bonjour titiborregan5,

Tout d'abord merci beaucoup pour ta réponse si rapide !

Concernant ce qui me gène en VBA, on va faire simple en disant: Tout :rolleyes:
Plus sérieusement, je n'y connais rien, et donc j'arrive pas à créer mes propres codes, à la limite adapter une macro ou un code... mais voilà pas beaucoup plus.
Je manque aussi de méthodologie.

J'ai donc adapté ton code avec une macro, qui:
Copie la plage jaune de la feuille Action à transférer dans la feuille Mouvement Stock.

Le problème est que ça copie a partir de la bonne ligne, mais pas de la bonne colonne (B) vu que la cellule sélectionnée est en B.
Donc je me disais, éventuellement utiliser ton bout de code pour mémoriser la "dernière ligne", puis la nommée (faire une déclaration) , et après, traiter colonne par colonne?
Qu'en pensez-vous?

Traiter colonne par colonne, je pense y arriver... cependant, mémoriser la dernière ligne puis la nommée pour la réutiliser, je ne sais pas trop comment faire...

Pouvez-vous me donner un ptit coup de pouce?

Merci

Sarah
 

Pièces jointes

  • Sarah 2.xlsm
    29.4 KB · Affichages: 30

titiborregan5

XLDnaute Accro
Re : VBA transfère de données d'une feuille à une autre

Ok Sarah, je ne savais pas trop ce qui bloquait.

La macro de frollinde fait le boulot, et plutôt bien visiblement.
Elle n'est juste pas optimisée, et peut devenir très lourde en cas de données nombreuses...

Si jamais cela arrivait, reviens et on l'arrangera!
J'essaie de te faire un bout de code également dès que je peux!

A+
 

sarah33

XLDnaute Junior
Re : VBA transfère de données d'une feuille à une autre

C'est super gentil titiborregan5 !
Surtout que mon vrai fichier excel est plutot "mégalourd" car c'est pour de la gestion de stock, et on a plusieurs 10 aines de milliers d'articles....

a plus tard !

sarah
 

titiborregan5

XLDnaute Accro
Re : VBA transfère de données d'une feuille à une autre

Du coup, question:
à quoi sert la zone jaune?
On copie à chaque fois une seule ligne ou ou copie tout ce qui se trouve dans le cadre jaune (dimensions qui peuvent varier)?

et dans cette zone, ne peut-il pas y avoir de la vente et de la commande? comment traiter dans ce cas?
 
Dernière édition:

sarah33

XLDnaute Junior
Re : VBA transfère de données d'une feuille à une autre

Enfaite la zone jaune, c'était une limite que j'ai faite pour ma saisie... et donc pour envoyer les données de cette zone sur la feuille mouvement stock.

Cependant, cette zone peut varier !! donc on pourrait peut être utiliser ton bout de code: range("B100000").end(xlup).offset(1,0)
Pour récupérer la dernière ligne de la zone de saisie, et envoyer le contenue de la zone dans la mouvement de stock?

sarah
 

sarah33

XLDnaute Junior
Re : VBA transfère de données d'une feuille à une autre

Re titiborregan5,

dsl pour le temps de réponse !!

ça à l'air de marcher super bien, je fais des tests et reviens si ça bug !!!
Sinon à bientot sur un nouveau fils ;) (j'en ai un qui sort ds pas lontemps !!)

Sarah
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg