Remplir des zones automatiquement depuis une base de données

Bonjour,

Mes connaissances en VBA étant très basic je reviens vers vous en espérant que vous pourrez m'aider une nouvelle fois.

Dans la feuille "A", la base de données comporte 7 (jamais plus) colonnes et 110(cela peut varier) lignes, a part faire un coupez-collez , j'aimerais avec une macro que dans la feuille "modele" les 13 premières lignes de la feuille "A" remplissent la 'zone1', les 13 suivants la 'zone2', les 13 autres la 'zone3' etc..... en appuyant sur le bouton distribution. Oui je sais le mot distribution n'est pas terrible mais je n'ai rien trouvé de mieux, si en passant vous avez une autre suggestion je suis preneur, bien entendu.

Merci à ceux qui pourront me dépanner..

Cordialement..

30depart11.xlsm (118.09 Ko)

bonjour

tu n'as aucun problème, il te suffit d'imprimer la feuille A en zones de 13 lignes

supprime la feuille modèle

pas besoin de VBA, rien

à la rigueur, tu crées un en-tête d'impression pour faire joli. C'est tout.

Bonjour,

Merci pour ta réponse bien entendu ceci pourrait être une solution malheureusement il nous faut faire des tris de temps en temps avant l'impression finale. J'ai vraiment besoin de remplir les tableaux de la feuille modèle.

re

non, les tris doivent se faire sur la Table initiale et pas de manière "comme on faisait sur du papier avec un crayon et une gomme"

si besoin ajoute à ta grande table une colonne de "tri", dans laquelle tu peux saisir des n° qui serviront à trier d'un clic

Waouwww ben là désole je ne comprends pas ce que tu veux dire.

Tu as surement raison mais je ne vois pas comment faire, si tu pouvais me donner la marche a suivre car la je décroche.

Merci

Bonjour

D'accord avec jmd : exemple illustré.

Regarde l'aperçu avant impression...

32departs.xlsm (116.92 Ko)

Oui mais en faisant cela si je fais un tri par heure RDV je me retrouve sur la première feuille avec plusieurs 8h00. Il ne peut y avoir qu'un 8h, un 8h10, un 8h20 ect... comme cela jusqu'à 10h par feuille.

Etant assez nul avec Excel je pense que je n'ai pas su poser comme il faut mon problème ou alors je n'ai pas compris votre réponse.

je pense que je suis vraiment obligé de faire mes tableaux comme sur la feuille "modèle".

Du coup j'ai tenté avec l'enregistreur de macro de distribuer la liste de la feuille "A" sur la feuille "modèle"ca fonctionne super bien mais par contre je suis persuadé que je peux supprimer quelques lignes, pourriez-vous m'aider à rendre cette macro plus légère car j'ai 32 zones.

Merci.

Cordialement..

Sub remplir_zone()

'' remplir_zone1

Range("A2:G14").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("modele").Select

Range("A5").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

' remplir_zone2

Sheets("a").Select

Range("A15:G27").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("modele").Select

Range("i5").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

' remplir_zone3

Sheets("a").Select

Range("A28:G40").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("modele").Select

Range("a21").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End Sub

11depart11.xlsm (120.81 Ko)

Bonjour

Tu peux trier selon plusieurs critères : à toi de définir les critères qui permettent la ventilation par zone, ce que ne fait pas ton code.

Ton problème est avant tout un problème d'analyse : que ce soit manuellement ou par VBA, il manque la logique de répartition...

Tes couleurs viennent de quelle logique ?

Bonjour,

les couleurs ne viennent d'aucune logique, j'ai juste colorié pour ne pas me tromper sur les 13 lignes que je dois prendre pour ventiler dans les zones.

C'est fou de ne pas arriver à ce faire comprendre et de ne pas comprendre ce que tout le monde me dis.

Je veux simplement que les 13 premiers noms integrent la Zone 1 de la feuille modele, les 13 suivants la zone 2 etc... car dans ses zones il va y avoir des modifications avant l'impression. Nous allons imprimer 1 zone par feuille. Sera remis a chaque salarié une feuille pour faire les departs des clients. C'est pour cette raison qu'il ne peut pas y avoir plusieurs départs, par exemple a 8h, sur la meme feuille.

C'est difficile a comprendre je sais...

Je renvois mon fichier que vous puissiez vous rendre compte sur la feuille modele comment fonctionne les zone. J'ai retiré les couleurs c'etait juste pour moi..

10depart11.xlsm (119.25 Ko)

Bonjour

J'ai bien compris ton objectif mais comme déjà dit il manque une information permettant une logique de classement juste avant impression.

J'ai bien compris que tu as mis les couleurs à la main mais le classement à ce moment venait d'où ? Le hasard ? L'ordre de saisie ? ....?????

Pour que la répartition par zone soit correcte il faut bien introduire le pourquoi et le comment de la ventilation dans Excel pas seulement dans ta tête

Ok, j'ai bien compris, enfin j'ai surtout compris que je suis incapable de poser clairement mon problème, j'en suis désolé surtout pour moi. Ce n'est pas grave merci d'avoir pris du temps à essayer de me comprendre. Par contre est-ce qu'au moins on peut m'aider a soulager la deuxième macro ci-dessous, car à chaque fois la macro repart sur la feuille "A" recopie et recolle sur la feuille select.

A la fin du message j'ai essayé quelque chose mais ca ne fonctionne pas..

Sub remplir_zone()

'' remplir_zone1

Range("A2:G14").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("modele").Select

Range("A5").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

' remplir_zone2

Sheets("a").Select

Range("A15:G27").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("modele").Select

Range("i5").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

' remplir_zone3

Sheets("a").Select

Range("A28:G40").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("modele").Select

Range("a21").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End Sub

J'ai essayé ça mais ca ne fonctionne pas, le contraire m'aurait étonné.

Sub remplir_zone()

'' remplir_zone1

Range("A2:G14").Select

Range("A15:G27").Select

Range("A28:G40").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("modele").Select

Range("A5").Select; Range("i5").Select; Range("a21").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End Sub

RE

Je doute que quelqu'un modifie un code qui d'une part ne sert à rien selon les avis de jmd et moi-même et sans avoir la logique qui sous-tend.

Tu dois quand même être capable de répondre à ma question : le classement actuel de ton onglet vient d'où ?

Salut à tous,

Pour t'aider

Option Explicit
Sub test()
Dim i As Long
    With Sheets("A")
        For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row Step 13
            .Range(.Cells(i, 1), .Cells(i + 12, 7)).Select
        Next
    End With
End Sub

Y a plus qu'à copier chaque plage dans les zones concernées de la feuille "modele"

klin89

le classement provient d'une exportation d'un logiciel de réservation.

J'ai colorié plusieurs plages (correspondant à 13 emplacements chacune) sur la feuille "A" que j'ai ensuite copié et coller sur la feuille "modèle" pour avoir mes zones de remplies. Je suis incapable d'expliquer mieux que cela désolé, je ne sais pas faire.

3depart222.xlsm (120.86 Ko)

RE

Donc si l'ordre initial doit être conservé ajoute une colonne Zone où tu inscris 1 ou 2 ou ...13

Ce qui te permettra d'utiliser cette colonne comme critère prioritaire de classement avant le classement par heure, emplacement ou autre et donc d'obtenir une répartition correcte à l'impression.

Éventuellement garder un soupçon de VBA pour remplir cette colonne par lot de 13 lignes à l'import et insérer les saut de page mais pas plus...

Tu as prévu 160 boutons : une usine à gaz surtout quand on ne maîtrise pas VBA

On te propose une solution simple, efficace mais si tu veux continuer cette usine à gaz, libre à toi...

Ok merci beaucoup !!

Ce n'est pas grave je vais me débrouiller avec mon usine a gaz.

Encore une fois merci a tous, et je suis sincère, de votre patience, surtout de votre aide et de vos solutions, que malheureusement je ne comprends pas.

Merci

Cordialement..

Re infolarive,

A tester sur une copie de tes données

Option Explicit
Sub test()
Dim i As Long, lig As Long, col As Byte
    lig = 5: col = 1
    For i = 2 To Sheets("A").Range("A" & Sheets("A").Rows.Count).End(xlUp).Row Step 13
        With Sheets("modele")
            '.Range(.Cells(lig, col), .Cells(lig + 12, col + 6)).Select
            .Range(.Cells(lig, col), .Cells(lig + 12, col + 6)).Value = _
            Sheets("A").Range(Sheets("A").Cells(i, 1), Sheets("A").Cells(i + 12, 7)).Value
            col = col + 8
            If col = 17 Then col = 1: lig = lig + 16
        End With
    Next
End Sub

klin89

Merci klin89

Waouwwwww !!

je ne sais pas quoi dire si ce n'est un GRAND MERCI car c'est exactement ce que je souhaitais, ca fonctionne super bien. Mes zones sont bien remplies et ta macro va super vite.

Un très très très GRAND MERCI.... C'est trop génial merci ...

Bonjour,

petite question, quand j'exécute cette petite macro, tout ce qu'il y a sur la feuille "A" s'efface c'est cool c'est ce que je souhaite.

Par contre sur la feuille "modele" ne s'efface que la plage "A21:O33" celle de "A5:O17" ne s'efface pas. Je n'ai mis que 2 plages mais j'en aurais bien plus au final.

Si quelqu'un pouvait me dire comment faire ca serait cool merci !!!

Sub nettoyage()

'

' nettoyage Macro

' Depart feuille "A"

Cells.Select

Selection.ClearContents

Range("A1").Select

Sheets("modele").Select

Range("A5:O17").Select

Range("A21:O33").Select

Selection.ClearContents

End Sub

2departtest.xlsm (117.76 Ko)

Re infolarive

Vois du coté de la méthode Union

Sub nettoyage()
    With Sheets("modele")
        Union(.Range("A5:O17"), .Range("A21:O33")).Select
        'Union(.Range("A5:O17"), .Range("A21:O33")).ClearContents
    End With
End Sub

Evite les Select si possible

klin89

Rechercher des sujets similaires à "remplir zones automatiquement base donnees"