insertion de données en fonction d'une base

Hugues

XLDnaute Impliqué
Bonjour Le Forum,

Je souhaiterais une aide pour finaliser un projet.
Dans un classeur j'ai deux feuilles :
la première contient l'ensemble du plan comptable (N° de compte, libellé, cycle)
la deuxième contient le grand livre

Je souhaiterais mettre en page le grand livre :
en insérant une colonne dans laquelle on mentionne le cycle,
en fonction du N° de compte, rechercher dans le plan comptable le cycle concerné
répéter le nom du cycle jusqu'au prochain compte

Je vous joins un extrait du plan comptable et d'un grand livre.

Merci par avance,

Hugues
 

Pièces jointes

  • mep_grand_livre.zip
    7.2 KB · Affichages: 38

Domic

XLDnaute Nouveau
Re : insertion de données en fonction d'une base

Bonsoir,
Dans un module tu insères une colonne dans ta feuille

Code:
Feuil2.Range("a:a").Insert (xlToRight)

Ensuite tu créés une boucle sur ta colonne de données
Code:
For Ligne = 3 To Feuil2.Range("C65535").End(xlUp).Row

Tu poursuis en découpant le texte et en vérifiant si c'est une valeur numérique :
Code:
If IsNumeric(Mid(Feuil2.Cells(Ligne, 3).Value, 1, 6)) Then
Si c'est une valeur numérique, tu la recherches dans ta premiere feuille
Code:
With Feuil1.Range("a:a")
    Set NumCompte = .Find(Mid(Feuil2.Cells(Ligne, 3).Value, 1, 6), LookIn:=xlValues)

Tu inscris le résultat de la recherche de la troisième colonne de la ligne trouvé dans ta seconde feuille
Code:
Feuil2.Cells(Ligne, 1).Value = Feuil1.Cells(NumCompte.Row, 3).Value
sinon tu recopies la valeur du dessus
Code:
Feuil2.Cells(Ligne, 1).Value = Feuil2.Cells(Ligne - 1, 1).Value

et tu reboucles.


Dans un module, tu peux inserer le code suivant:
Code:
Option Explicit
Sub MEF()
Dim Ligne As Long
Dim NumCompte As Variant
Dim Cpt_Cherche As Long

Feuil2.Range("a:a").Insert (xlToRight)

For Ligne = 3 To Feuil2.Range("C65535").End(xlUp).Row

If IsNumeric(Mid(Feuil2.Cells(Ligne, 3).Value, 1, 6)) Then
    With Feuil1.Range("a:a")
    Set NumCompte = .Find(Mid(Feuil2.Cells(Ligne, 3).Value, 1, 6), LookIn:=xlValues)
    If Not NumCompte Is Nothing Then
        Feuil2.Cells(Ligne, 1).Value = Feuil1.Cells(NumCompte.Row, 3).Value

    Else
    Feuil2.Cells(Ligne, 1).Value = Feuil2.Cells(Ligne - 1, 1).Value
    End If
    End With



Else
    Feuil2.Cells(Ligne, 1).Value = Feuil2.Cells(Ligne - 1, 1).Value
End If
Next Ligne

End Sub

Je te remet ton fichier, tu n'as plus qu'a executer la macro MEF.

A+

Domic
 

Pièces jointes

  • Copie de mep_grand_livre.zip
    10.7 KB · Affichages: 40

Cousinhub

XLDnaute Barbatruc
Re : insertion de données en fonction d'une base

Bonsoir, hugues et Domic

sensiblement le même cheminement :

Code:
Sub Macro1()
    Columns("A:A").Insert Shift:=xlToRight
    For Each cel In Range("C2:C" & [C65000].End(xlUp).Row)
        If IsNumeric(Left(cel, 6)) Then _
            Cells(cel.Row, 1).Value = Evaluate("index(Cycle,MATCH(" & Left(cel, 6) & ",N__cpte,0))")
    Next cel
    Range("A2:A" & [c65536].End(xlUp).Row) _
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
    Range("A2:A" & [c65536].End(xlUp).Row).Value = Range("A2:A" & [c65536].End(xlUp).Row).Value
    Columns("A:A").EntireColumn.AutoFit
End Sub
 

Pièces jointes

  • mep_grand_livreV1.zip
    12.1 KB · Affichages: 42

Discussions similaires

Réponses
36
Affichages
2 K

Statistiques des forums

Discussions
312 519
Messages
2 089 267
Membres
104 083
dernier inscrit
hecko