Macro recherche
Dans le cadre des travaux que j'effectue actuellement, je veux réaliser une fiche pour les comptes comptables.
ce que je cherche a faire c'est de créer une macro qui me permet de chercher sur un tableau un compte dans une colonne et de copier quelques information de la ligne qui contient le compte dans une deuxième feuille. bien entendu il peut y avoir plusieurs fois la présence de ce compte et je souhaite que ces lignes soit copier dans la feuil2.
étant donné que je suis débutant en macro, je suis un peu perdu.
voila le code que j'ai pu élaborer, sa marche mais j'aimerais copier que 4 colonne de la ligne et non toute la ligne, comment je peux faire cela?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
Dim Depart As String
Dim Lg As Long
If Not Intersect(Range("E4"), Target) Is Nothing And Target.Count = 1 Then
Lg = Range("E" & Rows.Count).End(xlUp).Row
If Lg > 5 Then
Range("E24:K" & Lg).ClearContents
End If
With Sheets("base de donnée")
Set Cel = .Columns(1).Find(what:=Target, LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Depart = Cel.Address ' On note la cellule ( l'adresse)
Do
.Range("A" & Cel.Row).Resize(1, 9).Copy Range("E" & Rows.Count).End(xlUp).Offset(1, 0)
Set Cel = .Columns(1).FindNext(Cel)
Loop While Not Cel Is Nothing And Cel.Address <> Depart
End If
End With
End If
End Sub
ci joint le fichier en question
Salut et bienvenue sur le Forum,
J’ai pris ta macro et l’ai placée dans le code de la feuille ‘fiche de compte’.
Sur ta feuille ‘Base de donnée’ (pourquoi sans ‘s’ ?), j’ai ajouté des lignes dès la ligne 18.
Si je modifie la cellule E4 de la feuille ‘fiche de compte’ et que je choisis par exemple ‘Commission d'apport’, les lignes 24 et 25 de cette feuille sont modifiées en conséquence.
Si je choisis ‘Commission de gestion’, les lignes 24 à 44 sont modifiées.
Que voudrais-tu en plus, en moins que ce que fait cette macro ?
A te relire.
bonjour
j'ai pas tout compris a ta macro mais je pense que ce que tu cherches a savoir :
j'aimerais copier que 4 colonne de la ligne et non toute la ligne, comment je peux faire cela?
c'est ici :
.Range("A" & Cel.Row).Resize(1, 9).Copy Range("E" & Rows.Count).End(xlUp).Offset(1, 0)si je ne me trompe pas le resize redimensionne a une ligne 9 colonnes et toi tu voudrais seulement les 4 premieres colonnes donc il faut remplacer par :
.Range("A" & Cel.Row).Resize(1, 4).Copy Range("E" & Rows.Count).End(xlUp).Offset(1, 0)Fred
Bonjour,
d'abord merci pour vos réponse.
Ce que je veux faire, c'est sélectionnée 4 colonnes de la ligne non successives. par exemple : la première, la 3éme, la 5éme et la 8éme.
la solution la plus facile est traiter la base de donnée de façon à avoir les colonnes que je veux sélectionner en premier.
Par contre, j'ai un petit soucis avec le code, quand je changes en E4 pour faire la recherche, j'ai toujours la première ligne de la recherche précédentes qui reste sur la ligne 23, je penses que je dois rajouter un nouveau code pour effacer les informations de la recherche précédente. Par contre la, aucune idée du code à rajouter.
pour la base de données "sans S" c'est juste une petite faute qui changera par la suite.
merci bcp
Re,
Ton fichier semble fait de bric et de broc – avec une macro que tu sembles avoir récupéré au petit-bonheur-la-chance – et ta demande devient de plus en plus floue.
Tu dis vouloir remplacer la ligne 23 en plus des lignes 24 et suivantes. Rien de plus simple, tu remplaces la ligne Range("E24:K" & Lg).ClearContents par la ligne Range("E23:K" & Lg).ClearContents.
Tu dis maintenant vouloir choisir ‘par exemple : la première, la 3éme, la 5éme et la 8éme’. Comment veux-tu déterminer à chaque fois les colonnes que tu vas choisir ? Et pourquoi veux-tu pouvoir choisir à chaque fois des colonnes différentes ?
Tes reports se font sur la feuille ‘fiche de compte’ par-dessus les titres A27, A29 ; n’est-ce pas un peu n’importe quoi ?
Ne voyant pas trop où tu veux en arriver, ce n’est pas très motivant de t’aider. De plus tu n’as pas vraiment répondu à mes premières questions
Amicalement.
bonjour,
Déja Merci pour votre aide, et effectivement maintenant j'arrive à réinitialiser la recherche et effacer la première ligne qui été figé.
pour le code de la macro, vue que j'avais fais mes études en programmation y'a a peu prés 6ans et que j'ai changé complètement de domaine, j'avais demandé de l'aide à un ami.
L'objectif de ce travail, est de pourvoir imprimer des fiches descriptives de comptes comptables (fiche de compte).
En d'autres termes j'ai un fichier qui reflète toutes les écritures comptables, susceptibles d'être utilisés par notre entreprise. Ce fichier est constitué de plus de 3000 lignes.
D'un autre côté, j'ai le canevas de la fiche de compte. Pour le remplir, je tire mes informations du premier fichier.
Cependant, la tâche est un peu difficile, en raison du nombre important d'écriture et de compte (pour 1 compte donnée, je peux avoir une dizaine d'écriture qui le mouvemente), d'ou l'intérêt de la MACRO, qui maintenant, grâce à votre aide, marche.
Maintenant le soucis est que la fiche de compte est un canevas communiqué par une institution étatique et qui ne prends pas en compte toute les informations de mon premier fichier. d'ou le faites que après avoir effectué la recherche, je veux afficher que quelques informations du 1ér fichier.
Techniquement parlant, dans le premier fichier, je dispose des éléments suivant:
- Intitulé du compte agresso;
- Evénement déclencheur agresso;
- Evénement déclencheur EKIP;
- Profil EKIP;
- Intitulé du compte EKIP;
- N Compte EKIP
- N COmpte Agresso;
- Débit;
- Crédit
Selon le canevas de la fiche de compte communiquée, je dois afficher que les informations suivantes :
- Evénement déclencheur agresso;
- Evénement déclencheur EKIP;
- Débit;
- Crédit
Soit je dois retravailler le fichier de façon a avoir les informations dans l'ordre d'affichage et demander à la macro d'afficher que les 4 première colonnes, où de développer un code qui me permettra d'afficher que les informations demander!
Re-bonjour,
J’ai un peu de peine à te suivre dans tes explications car tu n’utilises pas les références Excel pour me donner tes informations. Par exemple lorsque tu dis ‘En d'autres termes j'ai un fichier qui reflète toutes les écritures comptables, susceptibles d'être utilisés par notre entreprise’, je ne sais pas de quelle feuille de ton fichier Excel tu parles.
Je fais encore un dernier essai pour t’aider et si je trouve que c’est toujours trop confus, je me permettrais de laisser tomber.
Indique-moi alors - par rapport au fichier Excel que je te fournis maintenant - quel est le résultat final de la feuille ‘fiche de compte’ que tu désirerais lorsque tu choisis ‘commission d’apport’ dans la cellule E4 de cette feuille. Pour ce faire, tu peux effectuer une copie de cette feuille, la renommé ‘commission d’apport DESIREE’ et la modifier manuellement afin que je voie le résultat final désiré.
Fais de même après avoir choisi ‘commission de gestion’ en E4 afin de créer une nouvelle feuille ‘‘commission de gestion DESIREE’.
A te relire.
Bonjour,
Merci beaucoup ton aide. pour être plus clair, je vais prendre l'exemple de lu Compte "TVA collectée commission d'apport". le Résultat attendu après la recherche est:
- en E24 avoir l'information B8 de la feuille base de données;
- en F24 avoir l'information en C8 de la feuille base de données;
- EN G24 avoir l'information en H8 de la feuille base de données;
- en H24 avoir les informations en I9
en suite pour la seconde ligne:
- en E25 avoir l'information B9 de la feuille base de données;
- en F25 avoir l'information en C9 de la feuille base de données;
- EN G25 avoir l'information en H9 de la feuille base de données;
- en H25 avoir les informations en I9
tu trouveras dans le fichier le résultat souhaité après la recherche pour deux compte : "TVA collecté commission apport désirée" et "TVA collectée commission de gestion désirée.
Salut,
Je t’avais demandé expressément de me fournir des modèles de deux feuilles précises afin de voir quel résultat tu désirais s’il y avait beaucoup de ligne à reporter et toi tu as choisis deux feuilles autres !!!!
Fournis-moi alors absolument la feuille demandée.
Je constate déjà un souci avec les deux feuilles déjà fournies : tu n’as pas le même canevas sur les deux feuilles !!!!! Par exemple, sur la feuille ‘TVA Comission d'apport desirée’, tu as un titre dans les cellules fusionnées C3:G4 et ton logo ‘Mazars’ dans la colonne H alors que sur ta feuille ‘TVA comission gestion desirée’ tu as le titre dans les cellules fusionnées C3:H4 et ton logo ‘Mazars’ dans la colonne I. Si tu ne prends pas toujours la même feuille de base, on ne va jamais y arriver
A te relire.
Bonjour,
désolé du retard vue que j'été dans un déplacement et y'avait pas internet.
Au fait ce que je t'ai envoyé comme "TVA commission d'apport désirée" et TVA commission de gestion désirée" sont le résultat final rechercher après finalisation de toutes les fonctions et l e code.
c'est un travail qui a été déjà fait mais le problème avec celui çi est qu'il a été fait sur plusieurs fichier, ce qui rend la tâches pour l'utilisateur final difficile car il doit jongler entre trois ou 4 fichier. Mon objectif est de créer un seul fichier qui regroupe l'ensemble, d'ou le faite de vouloir créer cette fiche dynamique qui va me permettre de supprimer au moins deux des fichiers déjà créer (pour exemple j'en ai pour 300 comptes, et 300 fiches de comptes statiques ==> 300 onglets sur deux fichier excel, ce qui rend la tâches difficile).
La fiche de compte tire les informations de l"onglet "base de données" qui est la description des opérations comptables. Le problème actuelle est que cette base de donnée est aussi un outil de travail avec un canevas spéciale, et les informations que j'essaie d'extraire de cette feuille pour les afficher dans la fiche de compte ne sont pas ordonner. comme je t'ai expliquer avant, je voudrais afficher en :
- en E24 l'information B8 de la feuille base de données;
- en F24 l'information en C8 de la feuille base de données;
- EN G24 l'information en H8 de la feuille base de données;
- en H24 les informations en I9
les deux feuilles TVA commission de gestion désirée et tva commission d'apport désirée, est le résultat final souhaité après finalisation du code et de l'ensemble des fonctions.
je te remets le documents, ou jai essayé d'avoir le même canevas que celui de la feuille fiche de compte.
Re-salut,
Dans le fichier ci-joint, tu as une feuille qui s’appelle ‘Listes’. Dans la colonne gauche tu as les intitulés des comptes – liste que tu peux compléter à l’envi – et dans la colonne B tu as le nom qui sera donné à la feuille correspondante. Dans le nom des feuilles, tu ne peux pas avoir les signes spéciaux suivants /\*?[] ni avoir plus de 31 caractères.
J’ai pris l’une de tes feuilles exemple et en ai fait un modèle intitulé ‘Fiche de compte BIS’. Si tu choisis un intitulé en E4, une nouvelle feuille est créée pour ce compte et une bonne partie des reports – ceux qu’il me semble avoir compris – sont effectués.
Pour les intitulés qui ont plus de deux lignes dans la base de données, j’ai pris les données des deux premières lignes de la base de données.
Merci de me dire si c’est déjà un bon départ.
bonjour,
écoutes t'as fait mieux que je ne pouvais espérer, c'est très gentil de ta part. je vais maintenant ajouter toute la base de donnée, et faire les traitement nécessaire et je t'enverrais le tout si tu veux.
Merci bcp,
amicalement,
YBerouhou a écrit :je t'enverrais le tout si tu veux.
Non, ce n'est pas la peine. Si tu as ta solution, c'est suffisant
Par contre tu peux indiquer ton fil comme 'Résolu' en cliquant sur le petit V vert dans l'un de tes messages.
Tu as quand même présenté ton problème d'une manière un peu compliquée. Une prochaine fois essaie d'être plus simple dans la présentation de ton soucis.
A la prochaine.