XL 2010 Copie de contenu d'un fichier sous conditions

jeanba

XLDnaute Occasionnel
Bonjour à toutes et à tous,

J'ai parcouru certaines discussions portant sur mon souci mais aucune n'y apporte de réponse.

Voici mon souci:

J'ai une feuille qui doit intégrer les données d'un autre fichier ("copie matricielle" pourrait-on dire) sous la double condition:

1) que les 4 premiers caractères du compte général (colonne A) du fichier de départ appelé ici Bdd correspondent au compte général fichier d'arrivée
2) qu'on les colle à la bonne intersection de l'année indiquée par l'utilisateur dans une boîte de dialogue

Regardez par vous-même dans les fichiers joints...

Merci par avance.

Jeanba
 

Pièces jointes

  • Bdd.xlsx
    8.9 KB · Affichages: 38
  • Défis nouveaux-copie sous conditions.xlsx
    36 KB · Affichages: 29

jeanba

XLDnaute Occasionnel
Bonjour pierrejean,

Merci d'avoir été aussi rapide..
Message d'erreur: l'indice n'appartient pas à la sélection

upload_2017-5-20_17-1-55.png
 

pierrejean

XLDnaute Barbatruc
Re
J'avais supposé que ton fichier Bdd était ouvert
Voici pour partir avec Bdd fermé (Mais placé dans le même répertoire ; si ce n'est pas le cas remplacer Thisworkbook.path par le chemin du répertoire contenant Bdd)

Code:
Sub test()
Set W = ThisWorkbook
Workbooks.Open Filename:=ThisWorkbook.Path & "\Bdd.xlsx"
W.Activate
Sheets("BALGEN").Select
tablo = Workbooks("Bdd.xlsx").Sheets("Feuil1").Range("A2:D" & Workbooks("Bdd.xlsx").Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row)
tablo1 = W.Sheets("BALGEN").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
   For m = LBound(tablo1, 1) To UBound(tablo1, 1)
        If tablo1(m, 1) = Left(tablo(n, 1), 4) And (tablo(n, 3) <> "" Or tablo(n, 4) <> "") Then
           ligne = m + 1
           an = InputBox(tablo(n, 1) & "    " & tablo(n, 2) & "    Quelle Année ?") * 1
           For p = 3 To 17 Step 2
            If Cells(1, p) = an Then
                  W.Sheets("BALGEN").Cells(ligne, p) = tablo(n, 3)
                  W.Sheets("BALGEN").Cells(ligne, p + 1) = tablo(n, 4)
            End If
            Next
        End If
   Next
Next
Workbooks("Bdd.xlsx").Close (False)
End Sub
 

jeanba

XLDnaute Occasionnel
Bonjour pierrejean,

Je viens de tester ton code et il fonctionne très bien.
Il y a cependant les quelques écueils suivants:

- la msgbox apparaît à chaque ligne de la Bdd, or ce message ne devrait apparaître qu'une seule fois au moment où l'on appel la Bdd. Car, toutes les lignes de la Bdd sont de donnée d'un seul et même exercice. Il en sera toujours ainsi.
- en cas de pluralité d'occurrences dans la Bdd, est-il possible de faire SOMME.SI et copier el résultat d
 

jeanba

XLDnaute Occasionnel
Alors, Jeanpierre, es-tu inspiré?
Car en plus, je viens de réaliser que tous les comptes dans le fichiers destinataires ne sont pas de longeur 4.
Par conséquent, l'équation devient :

Dans le tableau destinataire, si le compte = GAUCHE(Compte dans la feuille Bdd; NBCAR(Compte de la feuille destinataire concerné), alors:
je copie la valeur du compte de Bdd à l'intersection de la ligne du compte concerné et de l'année entrée, en respectant les sens DEBIT/CREDIT...

Et ça, ça me prend vraiment la tête...

Jeanba...
 

pierrejean

XLDnaute Barbatruc
Oui bajean
Je te rappelle que nous sommes Dimanche !!
Et que j'ai tendance à préférer les problèmes dont l'énoncé est complet

Vois cette version
 

Pièces jointes

  • Défis nouveaux-copie sous conditions.xlsm
    50.3 KB · Affichages: 18

jeanba

XLDnaute Occasionnel
Ah mince, effectvement, je ne m'étais plus rendu-compte, absorbé que je suis dans ce truc de fou...!
J'en suis fort désolé.

Cela dit, je viens de tester ton nouveau code et il génère une erreur à cette ligne

upload_2017-5-21_19-44-9.png


et avec ce message d'erreur :

upload_2017-5-21_19-44-48.png


Je suis aussi désolé de ne pas avoir fourni plus tôt d'explications un peu plus calir sur mon projet...

Si
 

jeanba

XLDnaute Occasionnel
Bonsoir Pierrejean,

Suis parti de la journée, je ne vois ton post que maintenant....
Vois ci-joint s'il te plaît...
 

Pièces jointes

  • Défis nouveaux-copie sous conditions.xlsm
    263.7 KB · Affichages: 23
  • Bdd.xlsx
    83.1 KB · Affichages: 18

jeanba

XLDnaute Occasionnel
Wahoo Jeanpierre, ça fonctionne comme sur des roulettes!
Extra, vraiment extra!

Il reste juste un détail gênant:
comment faire s'il ne trouve pas un compte qui figure dans la Bdd mais pas dans le fichier destinaitaire
c'était le cas et la balance est déséquilibrée du coup

Compte non importé car absent du fichier de destination
upload_2017-5-23_10-57-29.png


Je propose comme solution qu'à la fin du traitement, il donne un journal d'anomalies
je sais pas s'il faut que ce soit un fichier texte, excel ou un formulaire...?
 

Discussions similaires