Execution d'une macro en fonction d'une ligne

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 !

monimeka

XLDnaute Nouveau
Dans mon classeur j'ai plusieurs feuilles.
J'ai créé une macro qui prends des valeurs dans les quatre premières pour les mettre en page dans une cinquième.
Pour chaque feuille j'ai pris les valeurs sur la ligne 1.
Tout fonctionne parfaitement. 😎

Tout devient beaucoup plus compliqué lorsque je regarde les 180 autres lignes qui attendent que je leur crée la même macro.... 😱

Mon manque de connaissances en VBA n'empêche en effet d'automatiser l'utilisation de la 1er macro comme modèle pour lancer les macros des différentes lignes. (pour m'éviter de la recopier 180 fois)

j'espère que j'ai été assez clair...
😱 J'attends vos coup de pouce 😱

Merci d'avance
 
Re : Execution d'une macro en fonction d'une ligne

Re-,
effectivement, il faut remplacer cette ligne :

Code:
        Set Nom = .Range("B5:B14").Find(Client, lookat:=xlWhole)

par celle-ci :

Code:
        Set Nom = .Range("B5:B14").Find(Client, LookIn:=xlValues, lookat:=xlWhole)

plus une autre modif (inverser les noms de feuilles)

le fichier :
 

Pièces jointes

Re : Execution d'une macro en fonction d'une ligne

OK 🙂

ca fonctionne. demain je teste cette dernière version sur l'autre PC.

il reste seulement une dernière petite chose. apres ca tu en aura fini avec ce fichier.
Pourrais tu modifier le moment de l'incrementation du numéro de la facture sur la feuille "facture", car lorsqu'on veut éditer une facture F, le numero F+1 s'affiche en meme temps que les infos de la facture F. C'est trop tot..... Et si on programmais le l'incrementation au moment ou on clique sur "edition facture"...??
 
Re : Execution d'une macro en fonction d'une ligne

bonjour...
l'incrementation est parfaite...merci.

par contre je n'ai toujours pas réussi a résoudre le mystère de l'autre PC....
La macro Facture ne veut toujours pas s'y lancer..🙁🙁
pourtant j'ai eu la lumineuse idée de réinstaller Office...mais ca na rien changé🙁

je n'ai testé que tardivement l'ajout de nouveau client...j'arrive pas (j'ai pas du bien comprendre ce que tu m'avais indiqué)
 
Re : Execution d'une macro en fonction d'une ligne

Re-,
l'ajout de nouveau client ne se fait que sur la feuille "Total"
Avec les formules dans les onglets des "cuistot" (PS, j'ai un collègue cuisinier qui déteste ce mot, dans le temps, les "cuistots" étaient ceux qui donnaient à manger aux animaux 😀), donc avec les formules dans les onglets "cuisiniers", le nom des nouveaux clients sont automatiquement ajoutés
Tu n'as rien à changer au niveau des noms dans les onglets "cuisiniers"
Pour l'autre PC, mets-toi sur le code de l'usf (Private Sub UserForm_Initialize())
Sélectionne le petit "c" de :

Code:
For Each [COLOR="Red"]c[/COLOR] In Sheets(sh)

et fais : Débogage/Ajouter un espion
En bas, tu vas avoir une nouvelle fenêtre "Espions"
Clique sur F8, jusqu'à :

Code:
If Not MonDico.Exists(c.Value)

et dis-moi la valeur qu'à "c" à ce niveau-là
 
Re : Execution d'une macro en fonction d'une ligne

alors...

sur le PC de ma collegue j'ai essayer de lancer la macro facture
j'ai eu le message d'erreur...j'ai cliqué sur debogage
j'ai ouvert le code de l'userform....j'ai placé un espion sur "c" comme tu me l'a indiqué.
j'ai cliqué plusieur fois sur F8 jusqu'a la fameuse ligne et la, dans le tableau de l'espion, dans la colonne valeur il est inscrit le nom du premier client.

j'espere que j'ai rempli ma mission😱
 
Re : Execution d'une macro en fonction d'une ligne

après avoir placé l'espion tu m'avais dit d'appuyer sur F8 jusque la ligne "If Not MonDico.Exists(c.Value) Then..." eh bien c'est a cette ligne que ca plante. je peux pas aller plus loin.
c a pour valeur d'apres l'espion "client 1"
 
Re : Execution d'une macro en fonction d'une ligne

RE-,
ne désespérons pas.......

rajoute cette ligne en début :

Code:
Private Sub UserForm_Initialize()
[COLOR="Red"]Dim MonDico As Object[/COLOR]

je continue à chercher pourquoi ça m......
Si quelqu'un a le même problème, qu'il se manifeste, svp
 
Re : Execution d'une macro en fonction d'une ligne

Bon, on va faire autrement

comme tu rentres tous tes clients dans la feuille "total", on va s'en servir pour initialiser la combobox

remplace tout le Private Sub UserForm_Initialize()

par :

Code:
Private Sub UserForm_Initialize()
Dim pl As Range
Derlig = Sheets("Total").[A181].End(xlUp).Row
Set pl = Sheets("Total").Range("B5:B" & Derlig)
pl.Name = "ListeClient"
Me.ComboBox1.RowSource = "ListeClient"
End Sub

PS : tu peux aussi supprimer la sub :

Code:
Sub Tri(a, gauc, droi)
Sub Tri(a, gauc, droi)
 
Re : Execution d'une macro en fonction d'une ligne

🙂 CA FONCTIONNE 🙂

génial...!!
j'ai tester le tout ...ca roule.
Par contre ca fait planter la macro sur les nouveaux clients...mais j'ai pas les symptomes exacts...laisse moi 5 min que je puisse te decrire tout precisement.

mais en tout cas le principal fonctionne....😀
 
Re : Execution d'une macro en fonction d'une ligne

alors...
j'avais donc fait le liens des colonnes A et B des feuilles cuisinier(😉) avec celles de la feuille total. j'ai rajouter de clients sur la feuille total et il apparaissent bien automatiquement sur chacune de feuilles cuisinier...on clique sur "Edition facture" la box apparait (ya une case a cocher qui s'appelle CheckBox1) Mon nouveau client qui a consommé apparait bien dans la liste de roulante mais lorsque je lance l'édition

Erreur 1004
erreur definie par l'application ou par l'objet


débogage (F8 sucssecifs...) c'est cette ligne qui génère l'erreur apparemment :
Sheets("total").Celles(lig,8).Value=Sheets.......
 
- 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
6
Affichages
542
Retour