Comment copier certaines cellules d'une colonne

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. Bonjour,

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

    Cordialement,
    1. Contributeur
      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