Simplification d'un groupe de macros

Bonjour,

Dans le fichier excel ci-joint je cherche à raccourcir un groupe de macro. Mon problème est que 15 feuilles de ce fichier envois des lignes vers 6 autres feuilles en fonction du choix fait dans une liste déroulante. Une fois les données traitées sur une de ces 6 feuilles la ligne est renvoyée à la feuille expéditrice.

Voici le code que j'utilise:

Pour les 15 premières feuilles. Ce code est répété 6 fois

If Target.Value = "Jocelyne 01" Then
With Sheets("Jocelyne")
ligvide = .Range("b65536").End(xlUp).Row + 1
.Cells(ligvide, 2) = Target.Offset(0, -5).Value
.Cells(ligvide, 3) = Target.Offset(0, -4).Value
.Cells(ligvide, 4) = Target.Offset(0, -3).Value
.Cells(ligvide, 5) = Target.Offset(0, -1).Value
.Cells(ligvide, 8) = Range("a1").Value
End With
  ActiveWorkbook.Save
End If

Pour les 6 autres feuilles le code sera répété 15 fois.

J'ai peur que celà ralentisse fortement l'exécution du fichier, d'autant que 21 personnes l'utiliseront et parfois simultanément.

Merci pour vos idées

Bonjour,

Je ne vois pas le fichier joint

Sinon, ce sera avec plaisir d'étudier le problème

A bientôt

Bouben

Le voilà

Pour l'instant seul la feuille Vincent et Jocelyne sont codés

4beta-4.zip (18.71 Ko)

Re-

En fait, c'est quoi le résultat attendu. Peux-tu préciser stp ?

Que doit faire la macro ?

A +

Bouben

Sur la feuille Vincent lorsque dans la colone G conseillé un conseillé est sélectionné l'ensemble de la ligne est envoyer vers la feuille du conseillé.

Par exemple sur la feuille Vincent si tu choisi Jocelyne 01 dans la colonne G alors la ligne sera envoyé sur sa feuille.

Sur la feuille jocelyne tu choisi Vincent dans la colonne retour et la ligne est renvoyé à Vincent avec les modifs dans le tableau retour.

En gros les feuilles Orange envois des données vers les feuilles bleu qui les traites et les renvois.

OK, je commence à comprendre.

J'étudie ça

J'ai naïvement essayé un truc du genre:

If Target.Value = "Jocelyne 01" or "feuil2" or "feuil3" .... Then

With Sheets("Jocelyne" or "feuil2" or "feuil3"...)

Mais biensur ce n'est pas ça

En fait, je pense qu'il faut revoir pas mal de choses, c'est-à-dire changer le fonctionnement actuel.

J'étudie une solution :

toutes les données dans un onglet à part (en gros c'est une "Base de données", en tant que puriste, je mets des guillemets, Excel n'étant pas une base de données

Ensuite, tu as 2 types d'onglets (ou plus, je verrai) :

  • un pour les conseillers
  • un pour les retours
Et une liste qui permet de restituer les bonnes données dans l'onglet.

=> en sélectionnant "Jocelyne" : affichage de la feuille de type "Conseillers", avec ce qui va bien

=> de même pour les retours

=> Tout est géré ensuite dans l'onglet de données

Je bosse ...

Bouben

Bonsoir,

Ci-joint une proposition.

Reprise du fonctionnement actuel avec une différence : tous les événements sont gérés au niveau du classeur et non au niveau de l'onglet.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Autre point : 2 modèles : un jaune, un bleu

Si le conseiller n'existe pas , l'onglet sera créé automatiquement (bleu ou jaune) lors de sa sélection.

Possible donc de supprimer les onglets, ils seront reconstruits (j'en ai laissé certains, supprimés d'autres, reconstruits d'autres automatiquement).

Une fois que tu auras compris le principe, tu pourras continuer/modifier le code si tu veux, et éventuellement revoir les modèles

Bonne soirée

Bouben

J'ai parcouru rapidement ce que tu à fais et ça me semble correspondre au poil à ce que je voulais faire

Un grand merci à toi

J'essaye tout ça ce soir

Rechercher des sujets similaires à "simplification groupe macros"