Comment copier certaines cellules d'une colonne

pealy -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, j'ai un fichier comptable dans lequel j'ai de l'information de la colonne A que je veux extraire pour copier vis-à-vis le détail de la colonne B. Je veux extraire les numéros de compte qui figurent dans la colonne A, mais cette colonne a aussi des dates, du texte, des lignes vides, etc. Mon fichier comporte plus de 60 000 lignes et une centaine de comptes à isoler. Dans l'exemple qui suit, je voudrais extraire le compte 1000 (sans le faire manuellement) et le copier vis-à vis toutes les lignes de la colonne B qui ont "banque". La même chose pour le compte 2000 que je voudrais l'associer vis-à-vis toutes les lignes de la colonne B qui ont le mot "compte client., ainsi de suite. Comment faire?

colonne A colonne B colonne C colonne D
1000 banque
solde d'ouverture 10000.00
2013-01-01 banque compte fourn 20000.00
2013-01-02 banque retrait 1000.00

2000 compte client
solde d'ouverture 20000.00
2013-01-01 compte client ABC 1000.00
2013-01-01 compte client ACD 200.00

2 réponses

  1. Lentzouille Messages postés 728 Statut Membre 64
     
    Bonjour,

    Je pense que le mieux pour toi serait de faire un tableau croisé dynamique, avec les données voulus,

    Cordialement,
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Le problème est surtout dû au fait que tu as des cellules vides, sinon un simple nb.si copié pourrait faire l'affaire
    donc, vba semble être la solution avec une macro paramétrée
    on suppose que la 1° ligne comporte les ent^tes


    Sub choisir()
    affecter 1000, "compte client" 'écrire le n°compte et la désignation voulus
    End Sub

    '---------------------------
    Sub affecter(compte, designation)
    Dim derlig As Long, Nbre As Long, Lig As Long

    'initialisation
    Application.ScreenUpdating = False
    derlig = Columns("A").Find("*", , , , , xlPrevious).Row
    Nbre = Application.CountIf(Columns("A"), compte)
    'recherche
    If Nbre = 0 Then 'erreur compte
    GoTo vide
    Else
    Lig = 1
    For cptr = 1 To Nbre
    Lig = Columns("A").Find(compte, Cells(Lig, "A"), xlValues).Row
    Cells(Lig, "B") = designation
    Next
    End If

    Exit Sub
    vide:
    MsgBox "Numéro inconnu", vbCritical
    End Sub


    Si la durée est trop longue, fais signe on peut aller + vite

    Michel
    0