XL 2010 Copie de contenu d'un fichier sous conditions

  • Initiateur de la discussion Initiateur de la discussion jeanba
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
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...
 
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
 
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...?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
1 K
Réponses
10
Affichages
4 K
Retour