Code vba copier coller les données dans plusieurs feuilles selon conditions [Résolu]

Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
- - Dernière réponse : cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
- 24 janv. 2019 à 13:22
Bonjour le forum,

Je suis novice dans VBA et j'ai pu trouver un code qui me permet de trier et cumuler des données.

Et maintenant je suis bloqué à la 2ème étape: j'aimerais qu'on m'aide à trouver un code qui me permettra de transposer les informations du tableau qu'on obtient après avoir cliqué le bouton "tri et cumul des données". J'aimerais qu'à partir de ce tableau pouvoir transférer ou copier-coller automatique chaque ligne sur les autres feuilles du classeur en fonction du n° de réceptionnaire:

Si n°réceptionnaire = 1000954 copier coller toutes les lignes ayant le même n° de réceptionnaire à la suite des lignes vides dans la feuille "LKW Walter"
Si n°réceptionnaire = 1000916 copier coller toutes les lignes ayant le même n° de réceptionnaire à la suite des lignes vides dans la feuille "DSV"
Si n°réceptionnaire = 1000125; 10002812; 1010626; 1000804 copier coller toutes les lignes ayant le même n° de réceptionnaire à la suite des lignes vides dans la feuille "WOEHL"
Si n°réceptionnaire = 1003386; 1000249 copier coller toutes les lignes ayant le même n° de réceptionnaire à la suite des lignes vides dans la feuille "GEODIS"

Si possible transférer les données sur les feuilles à la suite de chaque ligne sans écraser les anciennes données.

Merci d'avance pour votre aide.


Configuration: Windows / Chrome 71.0.3578.98
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
30
1
Merci
A tester... ce code dispatche les lignes dans les feuilles correspondantes et supprime les ligne de la feuille vl06o à mesure. Colle ce code dans un module de ton fichier et ça devrait faire l'affaire

Sub repartition_info()
Dim ws As Object, b As Object
Set b = Worksheets("vl06o") '<< feuille de base
col = 9 '<< numéro de colonne contenant les numéro de réceptionnaire dans la feuille de base

For i = 1 To b.Range("I65536").End(xlUp).Row
        Select Case b.Cells(i, col).Value
        Case "1000954"
        Set ws = Worksheets("LKW Walter")
        Case "1000916"
        Set ws = Worksheets("DSV")
        Case "1000125", "10002812", "1010626", "1000804"
        Set ws = Worksheets("WOEHL")
        Case "1003386", "1000249"
        Set ws = Worksheets("GEODIS")
        Case Else
        GoTo nex
        End Select
    b.Rows(i).Copy ws.Rows(ws.Range("A65536").End(xlUp).Row + 1)
    b.Rows(i).EntireRow.Delete
    i = i - 1
nex:
Next i
End Sub

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 64526 internautes nous ont dit merci ce mois-ci

cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
-
Désolé j'ai oublié de le mentionner mais les cellules sur lesquelles il faut copier les informations sont en cellules B8 et ainsi de suite. Je ne sais pas si c'est la raison pour laquelle le code ne marche pas parce que quelques données sont dispatchées dans les feuilles mais pas toutes.
Sais-tu où je peux joindre un exemple du fichier? ou sinon en expliquant les codes peut-être j'arriverai à faire les modifications selon mon classeur.

Merci d'avance
titeufdu89
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
30 -
utilise le site gratuit suivant pour créer un lien de téléchargement de ton fichier et poste le lien sur le forum : https://www.cjoint.com/
cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
-
daccord super voici le lien : https://www.cjoint.com/c/IAyjyXq0UGC
titeufdu89
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
30 -
Merci, les colonnes de A à F doivent être copiées également? ou uniquement de H à M?
Après ajout des informations dans la feuille concernée est-ce qu'on supprime les informations contenues de H à M seulement ou la ligne entière, ou rien?
cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
-
Non seules les colonnes de H à M doivent être copiées. Et après ajout des informations les colonnes de H à M devront être supprimées. Merci
Commenter la réponse de titeufdu89
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
30
1
Merci
Re, voici ton fichier : https://www.cjoint.com/c/IAyjSXsvL3N
clique sur le bouton "dispatche et suppression" pour exécuter la macro

NB : comme le fichier contient une macro, enregistre le avant de l'ouvrir et contrôle que l'extension du fichier soit bien ".xlsm". Si ce n'est pas le cas modifie la manuellement en renommant le fichier. Sinon il est possible que tu aies un message d'erreur en l'ouvrant directement depuis cjoint.

Bonne journée

Jc

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 64526 internautes nous ont dit merci ce mois-ci

cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
-
Merci beaucoup Titeufdu89. C'est exactement ce que je voulais comme résultat!!!

Serait-il possible que tu corriges la première macro que j'ai faite si ça ne t'embête pas? J'aimerais la ligne 1 soit figée lorsque je clique sur le 1er bouton (car il s'agit de l'entête) au lieu qu'elle se retrouve en bas de page.
titeufdu89
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
30 -
Voici ton fichier : https://www.cjoint.com/c/IAylkcPDblN

Pour info j'ai juste changé une ligne du code initial :
PL.Sort O.Range("B2"), xlAscending, O.Range("F2"), , xlAscending, Header:=xlNo


J'ai changé le "Header:=xlNO" en "Header:=xlYes" dans la ligne de code qui gère le tri de ton tableau de façon à ce qu'il ne prenne pas en considération la ligne des titres.

Bonne journée

Jc
cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
-
Merci cest super.

Bonne journée également.
Commenter la réponse de titeufdu89
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
30
0
Merci
Bonjour,

Dans quelle colonne sont contenus les numéros de réceptionnaire?
Quelle est le nom de ta feuille de base?

Bonne journée

Jc
cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
-
Bonjour merci pour ta réponse rapide, le nom de de la feuille est vl06o et les numéros de réceptionnaire sont dans la colonne I à partir de la cellule I2.

Bonne journée
titeufdu89
Messages postés
371
Date d'inscription
samedi 28 juillet 2012
Statut
Membre
Dernière intervention
4 mars 2019
30 -
Ok, les informations contenues dans la feuille vl06o sont elle supprimées une fois dispatchées dans les feuilles correspondantes ou restent-elles?
Car si elles ne sont pas supprimées ça signifie qu'avant de copier une ligne il faut vérifier qu'elle ne soit pas déjà présente dans la feuille de destination sans quoi à chaque execution de la macros toutes les lignes seront redispatcher à nouveau, même si elle l'ont déjà été lors d'une précédante execution. Si tel est le cas, combien de colonnes comporte ton tableau? Aurais tu une colonne qui comporterait un code unique sans doublon qui pourrais servir d'ID pour le contrôle?

Merci

Jc
cracram
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
-
Re,

Oui les informations contenues dans le tableau de la feuille vl06o sont supprimées une fois dispatchées dans les feuilles correspondantes.
Le tableau comporte 6 colonnes (H, I, J, K,L et M) sachant que les lignes du tableau peuvent aller de 2 à +infini.
La colonne sans doublon pourrait-être la colonne H contenant les n°BL.
Commenter la réponse de titeufdu89
Messages postés
9
Date d'inscription
jeudi 24 janvier 2019
Statut
Membre
Dernière intervention
24 janvier 2019
0
Merci
j'aurais aimer joindre le fichier mais je ne sais pas comment faire. mais ci-joint une capture de d'écran du classeur.
Commenter la réponse de cracram