XL 2013 Copie Colle Condition et supprime VBA

BENAM69

XLDnaute Occasionnel
Bonjour à tous,

Je tiens à préciser que je suis vraiment novice au niveau de la programmation VBA.
Je suis en train de buter sur un problème.
Je voudrais copier coller des cellules d'un onglet vers un autre.
J'ai commencé à le faire mais il me copie colle toutes les cellules existantes dans l'autre onglet même le titre des autres tableaux du même onglet. Derrière cette première étape j'ai besoin d'ajouter d'autres conditions.

Voici ce que je recherche :
Il y a 2 tableaux sur l'onglet numéro 1 (Donnée)

Dans le premier onglet : On démarre la vérification à partir de la ligne 4.
Sur la ligne 4, en colonne I (Date de réception), si la cellule est vide alors il ne fait rien. Si la cellule est différente de vide alors il va copier coller sur le deuxième onglet les informations de la même ligne vérifiée (seulement les informations suivantes :
COMPOSANTS Colonne 1 / N°DESSIN Colonne 2 / DIMENSION Colonne 3 / N°DESIGNATION TYPE DE GRAPHITE / MATIÈRE Colonne 4 / DATE DE RÉCEPTION Colonne 9 / QUANTITÉ RECUE Colonne 10 )
Une fois qu'il a fini, il passe à la ligne suivante jusqu'à la fin du premier tableau. Il colle sur le deuxième onglet à la suite. Une fois qu'il a fini avec le premier tableau il passe au deuxième et effectue la même chose.

Une fois le deuxième onglet traité, il passe au troisième. C'est exactement la même opération sauf qu'il vérifie en colonne K (Date de sortie), si la cellule est vide alors il ne fait rien et si différente de vide il colle les informations COMPOSANTS Colonne 1 / N°DESSIN Colonne 2 / DIMENSION Colonne 3 / N°DESIGNATION TYPE DE GRAPHITE / MATIÈRE Colonne 4 / DATE DE SORTIE Colonne 11 / QUANTITÉ SORTIE Colonne 12 ) sur le troisième onglet.

Une fois que le copier coller sur les deux onglets est fini.
Il fait un simple calcul : En colonne G (NOMBRE DE PIÈCE EN STOCK) = Colonne G + Colonne J - Colonne L
et Colonne M = Nombre en Colonne M + Nombre en colonne L.

Et pour finir, une fois cette étape de calcul est finie, il va supprimer les données inscrites sur l'onglet 1, seulement les 4 données suivantes :
DATE DE RÉCEPTION Colonne 9 / QUANTITÉ RECUE Colonne 10 / DATE DE SORTIE Colonne 11 / QUANTITÉ SORTIE Colonne 12

J'espère que mes explications ont été claires et que quelqu'un pourrait m'aider sur ce sujet.

Merci du fond du coeur pour ceux qui essayeront de m'aider sur ce sujet.

Je vous mets en pièce jointe le fichier avec des données factices.

Merci encore pour votre aide et espère avoir un retour sur ce sujet ^^

BENAM
 

Pièces jointes

  • Copie de stock_cc3000(Indutherm).xlsm
    25.1 KB · Affichages: 27

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Un peu long mais très bien expliqué !, j'ai donc suivi à la lettre tes instructions de réalisations
de là une méthode très basique facilement compréhensible par les "novices"
Avant de tester ce fichier enregistre, fait une copie et met de côté par sécurité quoique ce sont des données bidons mais il y a effacement des données
et le résultat est unique bien sûr
A toi de juger

PS :attention à la nomination de tes onglets , "matière" = 1 fois avec è l'autre avec e c'est important dans le VBA
 

Pièces jointes

  • stock_cc3000(Indutherm).xlsm
    28.8 KB · Affichages: 38

BENAM69

XLDnaute Occasionnel
Bonsoir
Un peu long mais très bien expliqué !, j'ai donc suivi à la lettre tes instructions de réalisations
de là une méthode très basique facilement compréhensible par les "novices"
Avant de tester ce fichier enregistre, fait une copie et met de côté par sécurité quoique ce sont des données bidons mais il y a effacement des données
et le résultat est unique bien sûr
A toi de juger

PS :attention à la nomination de tes onglets , "matière" = 1 fois avec è l'autre avec e c'est important dans le VBA

Salut à toi Herve62,

Franchement je ne sais pas quoi répondre, c'est vraiment mais vraiment parfait !!!!
Je n'arrive pas à croire qu'en seulement quelques lignes de codes, tu as réussi à réaliser ce que j'essayais de faire depuis des heures et des heures !!!!

Je tiens sincèrement à te remercier du fond du coeur wwhhhhaaaaaooooo !!!
C'est vraiment cool !!!!!

Je voulais également savoir comment on fait pour déplacer ton bouton de Lance Traitement sur un autre endroit du premier onglet et si possible changer le nom du bouton ?

Est-ce que c'est également possible de faire un copier coller de ton code et adapter ce dernier si un troisième tableau est à créer mais toujours dans l'onglet numéro 1 (Donnée) ? Je n'ai pour le moment mis que 2 tableaux sur le premier onglet mais il se peut qu'un troisième tableau est à intégrer mais toujours avec le même type de tableau et avec les mêmes colonnes de vérification ? Si c'est le cas je serai très ravi ^^

Est-ce également difficile de coder pour une alerte ? C'est a dire si à la fin de tout ce que le code que tu m'as fourni est réalisé, si à la colonne H, la quantité du stock mini est inférieure à la colonne G (Nombre de pièce en stock), il m'encadre les cellules ayant un stock mini inférieur au nombre de pièce en stock ? Juste pour alerter qu'il faut commander à nouveau. Si le nombre de pièce en stock est toujours inférieur au stock mini alors il reste toujours en encadré rouge ? Et une fois que le nombre de pièce en stock est supérieur alors l'encadré en rouge disparaît ?

En tout cas merci merci beaucoup de ton aide ^^

BENAM
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Re
Bien que cela te plaise , mais bon c'est ce que tu as demandé
Normalement ici on ne donne pas du tout cuit , mais là en peu de temps c'était fait
Pour la suite , novice ne veux pas dire que tu ne comprends pas !! donc regarde un peu la structure du code
et tu vas vite remarquer ce qu'il faut ajouter dans chaque Sub pour un 3éme tableau puisque j'ai bien indiqué
chaque section : 1er Tableau & 2eme tableau .... à toi de bosser un peu
enfin , pour l'alerte pas besoin de code ... les MFC sont là pour ça !! c'est très courant en gestion de stock !!
Fond de cellule en orange = ça se gâte !!! , en rouge = Alerte !! commande
A+
 

BENAM69

XLDnaute Occasionnel
Re
Bien que cela te plaise , mais bon c'est ce que tu as demandé
Normalement ici on ne donne pas du tout cuit , mais là en peu de temps c'était fait
Pour la suite , novice ne veux pas dire que tu ne comprends pas !! donc regarde un peu la structure du code
et tu vas vite remarquer ce qu'il faut ajouter dans chaque Sub pour un 3éme tableau puisque j'ai bien indiqué
chaque section : 1er Tableau & 2eme tableau .... à toi de bosser un peu
enfin , pour l'alerte pas besoin de code ... les MFC sont là pour ça !! c'est très courant en gestion de stock !!
Fond de cellule en orange = ça se gâte !!! , en rouge = Alerte !! commande
A+
Re,

C'est compris ^^ en tout cas merci encore pour ton aide !!!! Tu es génial !!!!
A+
 

herve62

XLDnaute Barbatruc
Supporter XLD
Je voulais également savoir comment on fait pour déplacer ton bouton de Lance Traitement sur un autre endroit du premier onglet et si possible changer le nom du bouton ?
SAlut
Un oubli ! tu vas dans l'onglet "Developpeur" du menu excel ( en haut ) tu te mets en mode création puis tu cliques droit sur ton bouton > menu > Objet bouton > editer , là tu modfies ; Pour déplacer , utilise la croix sur le rectangle tout simple tu le bouges
Tu recliques sur création et tu peux exécuter
 

BENAM69

XLDnaute Occasionnel
SAlut
Un oubli ! tu vas dans l'onglet "Developpeur" du menu excel ( en haut ) tu te mets en mode création puis tu cliques droit sur ton bouton > menu > Objet bouton > editer , là tu modfies ; Pour déplacer , utilise la croix sur le rectangle tout simple tu le bouges
Tu recliques sur création et tu peux exécuter

Merci pour ton retour ^^, c'est fait hihi.

Est-ce normal que lorsqu'il copie colle sur les deux onglets, il me laisse des espaces entre les lignes. J'ai fait un test avec une seule ligne de remplie complètement sur le 1er et 2eme tableau. Quand je lance le traitement, il ne copie colle pas à la suite de telle sorte qu'il n'y ait pas d'espace.

upload_2018-11-8_14-55-2.png


C'est possible d'ajouter une fonction de collage spéciale pour qu'il colle a la suite ?
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Ne connaissant ton usage je me suis basé sur ton exemple
Mais rien de grave dans les boucles des 2 sub ( Mat_In et Mat_OUT):
Code:
For x = 4 To .Range("a4").End(xlDown).Row
For x = 30 To .Range("a30").End(xlDown).Row
tu remplaces a4 par a3 et a30 par a29
exemple de resultat pour 2 lignes tab 1, et 5 pour tab2 joint
 

Pièces jointes

  • EM1.jpg
    EM1.jpg
    43.6 KB · Affichages: 45
  • EM2.jpg
    EM2.jpg
    43.2 KB · Affichages: 47

BENAM69

XLDnaute Occasionnel
Bonsoir
Ne connaissant ton usage je me suis basé sur ton exemple
Mais rien de grave dans les boucles des 2 sub ( Mat_In et Mat_OUT):
Code:
For x = 4 To .Range("a4").End(xlDown).Row
For x = 30 To .Range("a30").End(xlDown).Row
tu remplaces a4 par a3 et a30 par a29
exemple de resultat pour 2 lignes tab 1, et 5 pour tab2 joint

Re,

Et bien enfaite ce que tu m'as fourni dans le premier fichier c'est déjà ce que tu avais marqué.

J'ai finalement opté par une autre astuce, j'ai ajouté une boucle for avec suppression des lignes vides dans les deux onglets ^^.

En tout cas je te remercie encore une fois de t'être penché sur le sujet ^^
 

Discussions similaires

Réponses
12
Affichages
230

Statistiques des forums

Discussions
312 103
Messages
2 085 321
Membres
102 862
dernier inscrit
Emma35400