En image c'est plus comprehensible

Bonjour les amis,

L'idée de ce module qui ne fonctionne pas comme je le souhaite, est qu'à partir de l'onglet "BD" il créer les fiches automatiquement et que surtour il réparti dans la colonne vacances colo les chiffres correspondant, ensuite dans la colonne alimentation exterieur, il recherche le n° de la pièce correspondant à la colonne vacances colo et qu'il le met bien dans la bonne ligne, et enfin pour la 3e colonne, il recherche aussi le n° de pièce correspondant à la colonne vacances colo et qu'il met le chiffre correspondant.

il y a peut être une simple adaptation à faire...

Il est impossible de le faire avec l'action copier coller.

Pouvez-vous m'aider svp ?

Voici la capture d'écran de ce que je souhaite avoir en automatique :

ecran 3

Voici le code existant qui ne fonctionne pas comme je le souhaite...

Sub ExtraireParGroupeColonneB()
Dim O As Long, NbLg As Long
Dim n As Integer
Dim H1 As Worksheet
Dim Mondico As Object
Dim Tablo
Dim Interdits
Dim ligne

  Interdits = Array("&", ":", "/", "\", "~?", "~*", "[", "]", Chr(34))

  Application.ScreenUpdating = False

  Application.DisplayAlerts = False

  Application.DisplayAlerts = True

  Set H1 = Sheets("BD")
  If H1.FilterMode = True Then H1.ShowAllData
  NbLg = H1.Range("A" & Rows.Count).End(xlUp).Row

rep = InputBox("Choisir la lettre de la colonne pour la création de fiches", "CREATION DE FICHES PAR GROUPES", "B")

  H1.Columns(rep).Copy H1.Columns("O")

  With H1.Range("O2:O" & NbLg)
    For n = 0 To UBound(Interdits)
      .Replace what:=Interdits(n), replacement:="_", lookat:=xlPart
    Next n

  End With

  Set Mondico = CreateObject("Scripting.dictionary")
  For O = 2 To NbLg
    Mondico(H1.Range("O" & O).Value) = ""
  Next O

  H1.Range("O1:P1") = "XYZ"

  Tablo = Mondico.keys
  For n = 0 To UBound(Tablo)
    Sheets.Add(after:=Sheets(Sheets.Count)).Name = Tablo(n)
    Sheets("Modèle").UsedRange.Copy
    Sheets(Tablo(n)).Range("A1").PasteSpecial

    With Sheets(Tablo(n))
      .Range("A2") = Tablo(n)
      H1.Range("P2") = Tablo(n)

        For Each cel In H1.Range("G2:G" & NbLg) 'pour chaque cellule de G2 à G_DernièreLigne
            r = cel.Row
            noms = H1.Range("C" & r)
            If H1.Range(rep & r) = Tablo(n) Then
                c = .Range("A1000").End(xlUp).Row + 1
                If .Range("A9") = "" Then
                    H1.Range("C" & r & ":H" & r).Copy 'Copie de C à H feuille BD
                    .Range("A" & c).PasteSpecial xlPasteValues 'Colle depuis A feuille modèle
                End If

                If Not .Range("E9:E" & c).Find(cel) Is Nothing And Not .Range("A9:A" & c).Find(noms) Is Nothing Then
                'Si le numero de pièce existe déjà dans la feuille modèle alors...
                Set ligne = .Range("E9:E" & c).Find(cel) 'on trouve la ligne correspondante
                    If Not ligne Is Nothing And .Range("A" & ligne.Row) <> noms Then
                        Flig = ligne.Row
                        Do
                            cel.Value = cel
                            Set ligne = .Range("E9:E" & c).FindNext(.Range("E" & Flig))
                            ligne = ligne.Row
                        Loop While ligne = Flig And .Range("A" & ligne) <> noms
                    Else
                    ligne = ligne.Row
                    End If
remp:
                    'On prend chaque cas de compte et on vient mettre le débit et crédit dans les colonnes correspondantes
                    If H1.Range("A" & r) = "VACANCES - COLOS" Then .Range("G" & ligne) = .Range("G" & ligne) + H1.Range("I" & r): .Range("H" & ligne) = .Range("H" & ligne) + H1.Range("J" & r)
                    If H1.Range("A" & r) = "ALIMENTATION A L'EXTERIEUR." Then .Range("I" & ligne) = .Range("I" & ligne) + H1.Range("I" & r): .Range("J" & ligne) = .Range("J" & ligne) + H1.Range("J" & r)
                    If H1.Range("A" & r) = "AUTRES REMB.FRAIS GR 1" Then .Range("N" & ligne) = .Range("N" & ligne) + H1.Range("J" & r): .Range("M" & ligne) = .Range("M" & ligne) + H1.Range("I" & r)
                Else
                    H1.Range("C" & r & ":H" & r).Copy
                    .Range("A" & c).PasteSpecial xlPasteValues
                    ligne = c
                    GoTo remp
                End If

            End If

        Next cel

           ActiveWindow.DisplayOutline = False

    End With

      'ICI AJUSTER LIGNES ET COLONNES

    Call MiseEnPageFeuilleModeleColonnesEtLignes

  Next n

  H1.Columns("O:P").Clear
  H1.Select

End Sub

Bonsoir,

Je me suis permis d'emprunter votre fichier du post précédent car difficile de faire du vba sans fichier...

Bref, voici une version à tester ci-joint, pas très dynamique, mais efficace.

@+

Merci Loriso et tu as bien fait de prendre le fichier du post précèdent.

Je viens de tester et malheureusement le résultat attendu n'est pas celui que j'attendais. Je vais être plus précis pour une meilleure compréhension.

Pour moi la créatoin de fiches c'est l'extraction de données depuis une base de donnée pour créer d'autres onglets bien précis.

exemple : Nous travaillons dans un centre éducatif pour enfants, dans notre établissement, il existe plusieurs lieu de vie, les enfants de 5 à 10 ans, les enfants de 11 à 15 ans et les enfants de 16 ans à 17 ans, il existe donc 3 groupes de vie. Ce que je souhaite avoir dans la création de fiches, c'est les dépenses de plusieurs comptes comptables répartient pour les 3 groupes de vie, donc 3 onglets, un onglet groupe de vie 1, un onglet groupe de vie 2 et un onglet groupe de vie 3.

Il y a effectivement un regroupement à faire, mais la complication est dans le regroupement des lignes comptables avec le point commun qui est le numéro de la pièce comptable, je m'expliques :

exemple d'écriture comptable : N° pièce comptable ACE10/015 - Groupe de vie : ARTISTES

Au débit : compte vacance pour 100 euros

compte alimentation pour 30 euros

Au crédit : compte fournisseur pour 90 euros

compte Rembt Caf pour 40 euros

J'aurai donc dans l'onglet ARTISTES :

ecran 4

Bonjour,

Je n'avais pas compris la chose

Il est vrai que c'est plus simple de faire qu'une seule ligne par n° de pièce.

J'ai donc refais la code, et bonne nouvelle il est plus dynamique que l'ancien, (les noms des onglets s'adaptent à la BD, le code va "droit au but" et est donc plus rapide)

Fichier ci-joint,

A l'écoute de ton retour,

@+

Merci beaucoup Loris d'avoir pris le temps de travailler sur mon dossier, c'est cool.

Je viens de tester et visiblement ça fonctionne, mais je dois encore regarder en profondeur en vérifiant ligne par ligne si tout va bien, je vais dans un premier temps importer ma base de données qui est assez longue ensuite je dois vérifier si toutes les lignes ont bien été extraitent.

Je reviens vers toi dès que possible, en tout les cas merci beaucoup c'est vraiment gentil

Rechercher des sujets similaires à "image comprehensible"