VBA Excel Copier valeur cellule variable dans autre feuille sous condition

Bonjour

Etant novice en VBA, je recherche une solution en VBA pour le fichier joint à ce message Essai_V1.xlsm. Via une autre discussion, un module en VBA que vous trouverez sous le module 1 de Visual Basic a déjà été fait !

Chaque feuille a été programmée avec des mises en forme conditionnelle pour que les cellules de chaque ligne (De la conne B jusqu'à la colonne P) changent de couleur en fonction de certaines conditions (Voir exemple dans l'onglet "Phoenix_Mécano" et vous appuyant sur la légende des couleurs disponibles sur chaque onglet).

On peut créer autant de feuilles que nécessaire ; dans l'exemple, on a en tout 10 feuilles dont une est pré-remplie (onglet "Phoenix_Mécano") mais on peut en avoir plus ou moins ... selon les besoins de l'utilisateur.

Rem. : Je pense qu'il faudra faire un compteur et donc compter les feuilles une fois que tous les distributeurs seront créés par l'utilisateur.

Rem. : Les cellules des colonnes B, D, F, M, N sont au format texte ; les cellules des colonnes C, E, sont soit au format texte soit au format numérique (je les ai mises en standard ne sachant pas comment faire) ; les cellules de la colonne G sont au format nombre (sans virgule ... nombre entier) ; les cellules des colonnes H et I sont au format monétaire ; les cellules des colonnes J, K et P sont au format date ; les cellules des colonnes L et O sont au format texte en cliquant sur le menu déroulant (type liste) disponible dans chaque cellule de ces 2 colonnes.]

Ce que je voudrais, c'est qu'en cliquant sur le bouton (associé au module 1) "Créer liste des Distributeurs" disponible dans l'onglet "RECAPITULATIF" :

1 - Tous les onglets se rangent automatiquement par orbre alphabétique ; ce qui se fait quand on clique 1 fois sur le bouton "Créer liste des Distributeurs". Mais il faut appuyer une seconde fois sur ce bouton pour que le classement se fasse correctement dans le tableau de l'onglet "RECAPITULATIF". Peut-on le faire en une seule fois ? Il faut qu'on garde en 1ère position l'onglet "RECAPITULATIF".

2 - De plus, je voudrais recopier automatiquement le nom de chaque ONGLET créé par l'utilisateur du fichier et existant au moment de la création du RECAPITULATIF à partir de la cellule A5 dans l'onglet "RECAPITULATIF" et recopier en A6, A7, ... etc etc les noms des autres onglets rangés alphabétiquement. [Rem. : on peut créer 15, 20 ou 25 distributeurs avec des noms différents ... voire plus ou moins!] ; le tout sans enlever la dernière qui doit bouger en fonction du nombre d'onglet utilisé. Donc il fait que le tableau déjà formé dans l'onglet "RECAPITULATIF", s'adapte automatiquement au nombre d'onglet utilisé en partant de la ligne 5 et en gardant la dernière ligne qui elle va forcément bouger.

3 - Toujours dans l'onglet "RECAPITULATIF", je voudrais recopier automatiquement la valeur du total cumulé (H.T.) de chaque onglet dans la colonne B (valeur de la cellule dont la somme totale hors taxe de chaque ligne) en partant de B5. Le problème est que sur chaque onglet le total cumulé H.T (€) peut changer de position dans la colonne I en fonction du nombre de lignes utilisé.

Voilà pour le moment, si vous pouvez me donner la solution ça me gagnerait un temps précieux.

Par avance, merci beaucoup pour votre aide.

Cordialement

Cyril

26essai-v1.xlsm (69.68 Ko)

Bonjour et bienvenue sur le forum,

Pas facile mais je te propose une solution.

Je ne sais pas si j'ai traité l'intégralité des points mais tu me diras.

Cordialement

Bonjour,

merci pour ta réponse .....

Par contre, ça ne fonctionne pas comme je le souhaite.

Si j'ai le total cumulé qui reste sur chaque feuille en I 17 c'est bon ça fonctionne mais si je rajoute des lignes au dessus (ou que j'en supprime) mon total cumulé ne se retrouve plus en I17 et là cela ne fonctionne pas .

Peux-tu y remédier ca serait super sympa ?

Encore merci pour ton aide.

Bien à toi,

Cyril

Re-bonjour,

Je veux aussi garder le fait que si j'ai un onglet qui est entièrement vides qu'il soit supprimé automatiquement de sorte qu'il n'apparaisse pas dans le récapitulatif.

Merci.

Cordialement,

Re,

J'ai fait les modifications. La procédure qui existait été incomplète mais elle faisait correctement une partie du travail demandé.

Teste et dis moi!

Cordialement

Bonjour,

merci pour ta réponse .....

Ca semble fonctionner COOOOOL pour le total cumulé qu'il soit en I17 ou pas, !

Je voudrais aussi garder le fait que si j'ai un onglet qui est entièrement vides qu'il soit supprimé automatiquement de sorte qu'il n'apparaisse pas dans le récapitulatif.

Peut-on programmer en VBA à l’ouverture du fichier Essai_V1.xlsm, et seulement pour ce fichier, activer les macros sans être obligé à chaque ouverture de cliquer sur "Options …", puis sur "Activer ce contenu" ?

Sur l’onglet "RECAPITULATIF" :

  • Peut-on programmer en VBA la hauteur de la ligne associée à chaque distributeur (donc à partir de la ligne 5) sur une hauteur 20 par exemple pour chaque onglet distributeur créé?
  • Peut-on aussi programmer en VBA la hauteur de la ligne associée à la dernière ligne (donc la ligne Total de l’onglet "RECAPITULATIF") sur une hauteur de 30 par exemple ? c’est-à-dire que si la ligne Total tombe sur une ligne qui était à 24 par exemple, elle s’adapte automatiquement à 30 !
  • Les lignes 1, 2, 3, et 4 ne bougent pas en hauteur.
  • Sur chaque feuille déjà créée (ou pour chaque feuille qui serait rajoutée par l’utilisateur du fichier), si rien n’est écrit dans les cellules allant de $B$3 à $H$16 et de $J$3 à $P$16, il faudrait supprimer cette feuille car elle serait inutilisée. Rem. : Si la dernière ligne est la ligne 10 et non plus la ligne 16, alors si rien n’est écrit dans les cellules allant de $B$3 à $H$10 et de $J$3 à $P$10, il faudrait supprimer cette feuille.
________________________________________

Encore merci pour ton aide.

Bien à toi,

Cyril

je coupe je reviens vers 19h ..... je teste celà tth ....

Encore un gros merci....... pour ton aide .

A tth.

Cordialement,

Re,

Voilà, j'ai fait les modification.

Attention à l'utilisation de la macro suppression des feuilles. Avec les adresses de cellules que tu m'as données, les feuilles distributeur xx vont toutes disparaitre. C'est bien ce que tu veux ?

Sinon, je crois avoir répondu à toutes des demandes.

Bons tests et bonne soirée.

Bonsoir,

je viens de me connecter à l'instant et je viens de tester ton dernier envoi ... merci.

Je t'ai mis un exemple en PJ (cf fichier Claivier58 Essai_V5.xlsm) dans lequel j'ai rempli un truc bidon dans distributeur 02, Distributeur 04, Distributeur 07 (Renommé en MDBES), Distributeur 01 renommé en Phoenix_Mécano et j'ai inséré une feuille vierge Feuil1.

Si jamais il n'y a rien de rempli dans distributeur 02, distributeur 03, ... , jusqu'à distributeur NN ce que tu as fait, fonctionne impeccable.

Par contre si je mets quelque chose comme (c'est le cas dans le fichier joint) dans l'onglet distributeur 02 qui est le 1er onglet traité la fonction suppression ne sert plus à rien. .... etc etc

Ce que je veux , c'est par exemple de façon aléatoire je remplis Distributeur 04, Distributeur 07 (Renommé en MDBES) et j'ai l'onglet Phoenix_Mécano qui est toujours rempli ....... ça me supprime tous les autres onglets(quelque soit le nom de la feuille) qui sont vides dans toutes les cases situées au dessus de la ligne total cumulé qu'on retrouve dans chaque feuille (excepté pour les cellules de la colonne I).

On doit vérifier s'il y a quelque chose de contenu dans les cellules situées au dessus de la ligne contenant le total cumulé pour chaque feuille excepté pour la colonne I (toutes le colonnes de B à P excepté la colonne I) :

Ex 1 : Dans l'onglet "Distributeur 02", j'ai laissé de la ligne 3 à la ligne 12 (cellule D9 complétée) et le total cumulé se trouve donc sur la ligne 13 ; donc cet onglet ne sera pas à supprimer.

Ex 2 : Dans l'onglet "Distributeur 04", j'ai laissé de la ligne 3 à la ligne 12 (cellule B8 complétée) et le total cumulé se trouve sur la ligne 22 ; donc cet onglet ne sera pas à supprimer.

Ex 3 : Dans l'onglet "Distributeur 07", j'ai renommé l'onglet en "MDBES", je n'ai laissé que la ligne (cellules F3, G3 et H3 complétées) et le total cumulé se trouve sur la ligne 04 ; donc cet onglet ne sera pas à supprimer.

Ex 4 : Dans l'onglet "Distributeur 06", j'ai juste rajouté des lignes au hasard et le total cumulé se trouve sur la ligne 28 ; donc cet onglet sera à supprimer ...... Comme tous les autres d'ailleurs qui doivent être supprimés (y compris l'onglet "Feuil1")

Merci pour ton aide et ton amélioration.

Cordialement,

Cyril

Bonjour,

Ex 1 : Dans l'onglet "Distributeur 02", j'ai laissé de la ligne 3 à la ligne 12 (cellule D9 complétée) et le total cumulé se trouve donc sur la ligne 13 ; donc cet onglet ne sera pas à supprimer. Ex 2 : Dans l'onglet "Distributeur 04", j'ai laissé de la ligne 3 à la ligne 12 (cellule B8 complétée) et le total cumulé se trouve sur la ligne 22 ; donc cet onglet ne sera pas à supprimer.Ex 3 : Dans l'onglet "Distributeur 07", j'ai renommé l'onglet en "MDBES", je n'ai laissé que la ligne (cellules F3, G3 et H3 complétées) et le total cumulé se trouve sur la ligne 04 ; donc cet onglet ne sera pas à supprimer.Ex 4 : Dans l'onglet "Distributeur 06", j'ai juste rajouté des lignes au hasard et le total cumulé se trouve sur la ligne 28 ; donc cet onglet sera à supprimer 

IL est difficile d'ajuster ta demande car les exemples soit disant créés ne le sont pas. Tu as dû joindre le mauvais fichier.

J'ai modifié le code de suppression en me basant sur la dernière ligne de la colonne I.

Je teste les plages b3:h & dernière ligne et j3:p & dernière ligne.

Si ces plages là ne contiennent rien alors on supprime la feuille.

Dans la procédure, au lieu de supprimer la feuille ou de conserver la feuille, j'ai mis un message correspondant à l'action que fera la procédure. A terme, si cela te convient, je modifierai certaines lignes.

Teste une nouvelle fois et tiens moi au courant.

Bonjour,

je te rejoins la ppièce jointe car je vien de m'apercevoir qu'elle ne correspondant pas au message que je t'ai envoyé hier.

Bonsoir,

je viens de me connecter à l'instant et je viens de tester ton dernier envoi ... merci.

Je t'ai mis un exemple en PJ (cf fichier Claivier58 Essai_V5.xlsm) dans lequel j'ai rempli un truc bidon dans distributeur 02, Distributeur 04, Distributeur 07 (Renommé en MDBES), Distributeur 01 renommé en Phoenix_Mécano et j'ai inséré une feuille vierge Feuil1.

Si jamais il n'y a rien de rempli dans distributeur 02, distributeur 03, ... , jusqu'à distributeur NN ce que tu as fait, fonctionne impeccable.

Par contre si je mets quelque chose comme (c'est le cas dans le fichier joint) dans l'onglet distributeur 02 qui est le 1er onglet traité la fonction suppression ne sert plus à rien. .... etc etc

Ce que je veux , c'est par exemple de façon aléatoire je remplis Distributeur 04, Distributeur 07 (Renommé en MDBES) et j'ai l'onglet Phoenix_Mécano qui est toujours rempli ....... ça me supprime tous les autres onglets(quelque soit le nom de la feuille) qui sont vides dans toutes les cases situées au dessus de la ligne total cumulé qu'on retrouve dans chaque feuille (excepté pour les cellules de la colonne I).

On doit vérifier s'il y a quelque chose de contenu dans les cellules situées au dessus de la ligne contenant le total cumulé pour chaque feuille excepté pour la colonne I (toutes le colonnes de B à P excepté la colonne I) :

Ex 1 : Dans l'onglet "Distributeur 02", j'ai laissé de la ligne 3 à la ligne 12 (cellule D9 complétée) et le total cumulé se trouve donc sur la ligne 13 ; donc cet onglet ne sera pas à supprimer.

Ex 2 : Dans l'onglet "Distributeur 04", j'ai laissé de la ligne 3 à la ligne 12 (cellule B8 complétée) et le total cumulé se trouve sur la ligne 22 ; donc cet onglet ne sera pas à supprimer.

Ex 3 : Dans l'onglet "Distributeur 07", j'ai renommé l'onglet en "MDBES", je n'ai laissé que la ligne (cellules F3, G3 et H3 complétées) et le total cumulé se trouve sur la ligne 04 ; donc cet onglet ne sera pas à supprimer.

Ex 4 : Dans l'onglet "Distributeur 06", j'ai juste rajouté des lignes au hasard et le total cumulé se trouve sur la ligne 28 ; donc cet onglet sera à supprimer ...... Comme tous les autres d'ailleurs qui doivent être supprimés (y compris l'onglet "Feuil1")

Merci pour ton aide et ton amélioration.

Cordialement,

Cyril

Je t'ai fait un retour il y a 20 minutes, l'as-tu testé ?

A tester sur ton dernier fichier (ce matin 8h20)

Re-bonjour,

Merci pour ton retour.

Je viens de tester le fichier Claivier58 Essai_V6.xlsm que tu m'as renvoyé. C'est ok sur le fait que tu modifies le code de suppression en te basant sur la dernière ligne de la colonne I.

Par contre si tu teste les plages b3:h & dernière ligne et j3:p & dernière ligne, cela veut-il dire que tu testes aussi la cellule h & dernière ligne ( la cellule où il y a d'écrit "Total cumulé (H.T.) : ") ? Ne vaut-il pas mieux tester les plages b3:h & dernière ligne -1 et j3:p & dernière ligne -1 ?

Si ces plages là ne contiennent rien alors on supprime la feuille. Ou si toutes les plages d'une feuille ne contiennent rien alors on supprime la feuille (cas de la feuille 1 qui est vierge)

Dans la procédure, au lieu de supprimer la feuille ou de conserver la feuille, j'ai mis un message correspondant à l'action que fera la procédure. A terme, si cela te convient, je modifierai certaines lignes. Ok par contre pour le message de conserver la feuille peut-on avoir le choix dessus OUI <-> NON et que si je clique sur NON là ça me supprime la feuille. Si je clique sur OUI, ça me conserve la feuille.

Merci pour ton aide.

Cordialement,

Ok pour le message avec effacer ou conserver ... je n'avais pas vu que le texte changeait en fonction de s'il y a du texte ou pas

Par contre ca ne les efface pas.

A tester !

Les feuilles se suppriment !

Ok super je te remercie beaucoup

Je vais regarder ton code pour essayer de le comprendre ....

Merci bien et si j'ai des petites améliorations puis-je te contacter ici ?

Bonne fin de week-end.

Bien cordialement,

Cyril

Tant qu'on est confiné, j'ai des temps libres

Bons tests

JE voudrais rajouter une feuille qui reste en 1ère position intitulée "Mode d'emploi" puis ensuite je voudrai en 2ème position la feuille "RECAPITULATIF" puis derrière toutes les autres feuilles distributeurs en gardant tout ce qui a déjà été fait.

Merci.

Je te joins le fichier car je ne sais pas comment faire sur ton fichier pour laisser en 1 ère position l'onglet "MODE D'EMPLOI" et en 2ème position l'onglet "RECAPITULATIF" quand j'appuie sur le bouton "Créer liste des Distributeurs".

Et ça doit garder tout ce qui a déjà été développé .....

Merci.

Rechercher des sujets similaires à "vba copier valeur variable feuille condition"