Demande de code VBA excel

Fermé
alexmouton Messages postés 13 Date d'inscription jeudi 14 février 2019 Statut Membre Dernière intervention 16 juillet 2019 - 14 févr. 2019 à 17:20
alexmouton Messages postés 13 Date d'inscription jeudi 14 février 2019 Statut Membre Dernière intervention 16 juillet 2019 - 4 mars 2019 à 14:41
Bonjour,

Je me retrouve devant un problème assez complexe...
Je dispose d'un tableau qui me sort chaque mois les entrées et sorties de mes stocks.
ce ficher est à la base un pdf qui est converti en excel.

Afin de pouvoir analyser la gestion de ces mouvements j'ai besoin d'extraire certaines données contenues dans des cellules en fonction d'autres informations présentes dans des cellules. pour les "recopier" sur une autre feuille annuelle.
Voici les contraintes:
j'aurai un fichier mensuel que je désire intégrer à un classeur annuel pour faire le suivi.
Problème: les numéros de lignes pour une même cellule varient d'un mois à l'autre.
les cellules ne sont pas forcément côte à côte.
Dans la feuille annuelle je taperai le code article afin de ne faire apparaitre que les données en rapport avec ce code.

Je vous mets un extrait de mon fichier de départ en image:


Pour la sortie je souhaite obtenir les informations suivantes
Afin de trier:
La cellule B6 liée à D6 ou autre numéro de ligne (premier tri correspondant au numéro de compte) (lié au mot COMPTE de la cellule voisine A6)
La cellule C9 ou au numéro de ligne (second tri correspondant au numéro article) (lié au mot ARTICLE de la cellule voisine B9)
Au pire des cas suivant la complexité je peux me passer du premier tri.

A afficher dans une autre feuille en fonction du numéro article:
J10 ou autre numéro de ligne
D23 ou autre numéro de ligne
H23 ou autre numéro de ligne
I23 ou autre numéro de ligne

J’espère avoir été assez clair dans ma description et mes contraintes.

Je vous remercie de votre aide.

Alex





Configuration: Windows / Firefox 47.0
A voir également:

1 réponse

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
14 févr. 2019 à 18:26
Bonjour,

Sans vouloir t'offenser, je trouve que tu as mal décrit la feuille de sortie que tu souhaites.
Est-ce qu'il s'agit de lister ligne par ligne les données
Mois considéré / Code Compte / Libellé Compte / Stock début de mois / Total Entrées sur le mois / Total Sorties sur le mois / Stock fin de mois
?
As-tu des bases en VBA pour pouvoir adapter le code qu'on pourrait te proposer à ta situation (comme ton fichier n'est pas à disposition) ?

A+
2
alexmouton Messages postés 13 Date d'inscription jeudi 14 février 2019 Statut Membre Dernière intervention 16 juillet 2019
15 févr. 2019 à 09:59
Bonjour,
Pas de soucis vous ne m’offensez pas ;)
Oui j'ai qqes notions en vba afin de "dupliquer" adapter les lignes de codes à la taille complète de mon fichier.
(Je vais qd même pas tout vous faire faire;) ça m'aide à apprendre;) au pire je reviendrais vers vous si j'ai des questions plus poussées)
Concernant la feuille de sortie la voici en image la première version plus simple que la version ultime. (je sais pas ajouter un fichier excel ici...)


voici les correspondances:
feuille d'origine feuille de sortie
B6 et autres n° de compte ---------> B2 (liste déroulante de choix permettant de filtrer la seconde liste déroulante)
C9, C25 etc --------------------------------> B3 (liste déroulante de choix permettant de définir l'article à analyser)
J10, J26(suivant le code choisi)-> B7 (pour le mois de janvier car autre numéro de colonne suivant le mois)
D23, D45(suivant le code choisi)->B8 (pour le mois de janvier car autre numéro de colonne suivant le mois)
H23,H45(suivant le code choisi)-->C8 (pour le mois de janvier car autre numéro de colonne suivant le mois)
J23,J45(suivant le code choisi)--->B9 (pour le mois de janvier car autre numéro de colonne suivant le mois)

Mon principal problème est que le fichier d'origine, le nombre de lignes marquées XXX (qui sont des entrées et sorties varient d'un article à l'autre et d'un mois à l'autre.

Je sais pas si j'ai été assez clair mdr

Pour version ultime ça sera le même principe sauf que là je chercherai à afficher dans la feuille de sortie les entrées et sorties journalière sur le modèle suivant. mais ça, ça sera pour plus tard car à mon avis plus long et plus compliqué.


Encore merci pour votre aide
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
15 févr. 2019 à 10:29
Il y a un problème de conceptualisation, je pense. C'est difficile/impossible/non souhaitable d'afficher directement le tableau tel que dans ta première capture d'écran de ce matin.
A mon avis, il faut passer par un tableau intermédiaire, qui serait une vraie base de données (et pas un copier-coller d'un pdf --> d'ailleurs, l'outil n'arrive pas à générer d'export Excel ?!).

Je dois pouvoir amorcer la constitution de cette base de données.
Il me manque deux trucs... Tous les articles associés à un compte sont à sa suite ? Et les autres "comptes" apparaissent plus bas dans la feuille ?

A+
0
alexmouton Messages postés 13 Date d'inscription jeudi 14 février 2019 Statut Membre Dernière intervention 16 juillet 2019
15 févr. 2019 à 11:14
Merci pour votre aide.
C'est bien ce que je pensai pour le coté construction d'une base de donnée en back sur laquelle on extrait ensuite.
Concernant le logiciel il est malheureusement impossible de sortir les données en excel.. ca aurait été trop beau..
Ensuite pour les infos complémentaires:
Tous les articles associés à un numéro de compte sont à la suite
les autres comptes apparaissent plus bas dans la feuille

Autre petit point et surement utile.. vu que c'est une conversion pdf en excel, a chaque nouvelle page pdf apparait l'entête de la page (lignes en jaune) et si les information d'un article sont coupé il y a les infos de la ligne rouge qui diffèrent par rapport au début normal des infos de l'article.

Voici une copie d’écran montrant la redondance des entête et reprise des infos en cours d'un article. il ne faut pas tenir compte des numéros de ligne j'ai copié le passage dans une autre feuille.



Si vous souhaitez je peux préparer un fichier source "allégé et anonymisé". et vous l'envoyer par mail.

Merci d'avance
0
alexmouton Messages postés 13 Date d'inscription jeudi 14 février 2019 Statut Membre Dernière intervention 16 juillet 2019
Modifié le 15 févr. 2019 à 11:24
Je viens même de me rendre compte que le fait qu'un article soir repris sur la page suivante, crée un décalage de colonne...
je contacte l’éditeur pour vérifier si il est vraiment impossible de sortir le fichier en excel. ca aiderait grandement..
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
15 févr. 2019 à 14:53
Si la structure des données était stable, cela pourrait ressembler à :
Sub essai()
l_ori = 1
f_ori = ActiveSheet.Name        'à adapter
f_dest = 3       'à adapter
l_dest = Sheets(f_dest).Range("A1048576").End(xlUp).Row
DernLigne = Sheets(f_ori).Range("A1048576").End(xlUp).Row
mois = Sheets(f_ori).Range("A2").Value

    While l_ori < DernLigne
        If Sheets(f_ori).Cells(l_ori, 1).Value = "COMPTE" Then
            'on collecte les infos...
            code_compte = Sheets(f_ori).Cells(l_ori, 2).Value
            libelle_compte = Sheets(f_ori).Cells(l_ori, 4).Value
        ElseIf Sheets(f_ori).Cells(l_ori, 2).Value = "ARTICLE" Then
            article = Sheets(f_ori).Cells(l_ori, 3).Value & " - " & Sheets(f_ori).Cells(l_ori, 5).Value
        ElseIf Sheets(f_ori).Cells(l_ori, 2).Value = "Stock debut de mois art." Then
            stock_debut = Sheets(f_ori).Cells(l_ori, 10).Value
        ElseIf Sheets(f_ori).Cells(l_ori, 2).Value = "Stock fin de mois art." Then
            stock_fin = Sheets(f_ori).Cells(l_ori, 10).Value
            total_entrees = Sheets(f_ori).Cells(l_ori, 4).Value
            total_sorties = Sheets(f_ori).Cells(l_ori, 8).Value
            '...et on renseigne la base
            Sheets(f_dest).Cells(l_dest, 1).Value = mois
            Sheets(f_dest).Cells(l_dest, 2).Value = code_compte
            Sheets(f_dest).Cells(l_dest, 3).Value = libelle_compte
            Sheets(f_dest).Cells(l_dest, 4).Value = article
            Sheets(f_dest).Cells(l_dest, 5).Value = stock_debut
            Sheets(f_dest).Cells(l_dest, 6).Value = total_entrees
            Sheets(f_dest).Cells(l_dest, 7).Value = total_sorties
            Sheets(f_dest).Cells(l_dest, 8).Value = stock_fin
            l_dest = l_dest + 1
        End If
        l_ori = l_ori + 1
    Wend
End Sub
0