Pb macro excel

Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

J'ai une macro qui me permet de masquer certaines lignes d'un tableau de la Feuil3 en fonction de la valeur de la cellule D4 de la Feuil1 : Macro1

En utilisant l'enregistreur de macro afin de copier coller le résultat de cette macro (ie les lignes restant affichées) sur une autre feuille donnée, j'obtiens la Macro2

Je voudrai combiner ces deux macros afin de pouvoir coller directement les lignes restant affichées selon le service sur une autre feuille. J'utilise la Macro3

Pourquoi ça ne marche pas ?

Merci d'avance

Elsie

A voir également:

32 réponses

Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

Ce matin j'ai trové un peu de temps, regarde le fichier joint.

sur la feuille test de L4 à L11 et plus si besoin(faudra revoir le liste de validation) saisir les adresse mail de contact.
Cette feuille mériterait d'être verrouillée seul les cellules C2 et C4 accèssibles de même les colonnes H à M masquées.

Avant de terminer ce projet, compléter les codes avec un détrompeur d'erreur GOTO

https://www.cjoint.com/?funPTvljNl
0
Utilisateur anonyme
 
Bonjour Mike,

Merci beaucoup pour ton aide !!

Je me suis rendu compte que je n'avais pas besoin d'autant de feuille du coup j'ai modifié le fichier. http://www.cijoint.fr/cjlink.php?file=cj201005/cijdSOUpR9.xls

J'ai mis dans les propriétés de la feuille 4 une macro afin que lorsqu'OK est sélectionné il se mette en vert et KO en rouge. Elle fonctionnait jusqu'à ce que j'ajoute une autre macro afin de protéger la feuille avant son envoi. Elle me met cette ligne en jaune :
cell.Font.ColorIndex = 50

Je ne sais pas quoi modifier dans cette macro :

Je sais qu'on peut utiliser la mise en forme conditionnelle, mais dans ce cas qu'écrire afin de mettre en forme directement toute la plage ("H2:M21"). Ou est obligé de le faire cellule par cellule ?

Merci d'avance.

Elsie
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

si tu changes constamment tes données, il faut revoir tous les codes et cela pour rien alors que c'est le boulot pour lequel tu es payé.
J'ai l'impression que tu glanes des codes sur les forums et que tu essayes de les adapter ou de te les faires adapter.
Je te propose de bien réfléchir à ton problème et donner des indications bien arrêtées, nous sommes bénévoles, pas toi

Comment veux-tu faire fonctionner ton fichier
1/ depuis la feuille Test tu sélectionnes un service, une adresse mail et tu actionnes le bouton
2/ les numéros sélectionnées sont copiés sur quelle feuille !
3/ si c'est sur la feuille Service dois tu apporter des modifications après le transfert, si oui l'envoi doit être différé ou non !
4/ nombre de feuilles dans le classeur !
5/ quelle est la feuille qui servira à l'envoi Service ou contrôle !
6/ Pour la colonne H avec OK ou KO pas de problème mais cette feuille est elle à l'origine verrouillée ou doit on la verrouiller pour l'envoi si c'est elle que l'on envoi, il serait judicieux de la verrouiller avec un mot de passe inclus dans le code, parce qu'avec une simple protection Outils/Protection le premier venu peut la ôter.
si tu souhaites un mot de passe lequel (tu peux me faire parvenir en message privé).
0
Utilisateur anonyme
 
Bonsoir,

Je n'ai pas changé mes données. C'est les mêmes depuis le début.
Les macros font ce que je voulais. Je ne savais pas que la mise en forme du fichier aller en bousiller certaines. Oui je glane des codes, je préférerais réussir à en faire ou à en adapter toute seule...mais je n'y arrive pas vraiment...

Comment j'aimerai que mon fichier fonctionne.

1/ depuis la feuille Test je sélectionne un service (une adresse y correspond automatiquement avec recherchev) et j'actionne le bouton

2/ la feuille 4 n'est pas protégée à cette étape

3/ les numéros sélectionnées (ie ceux du service sélectionnés) sont copiés sur la feuille 4 (la seule que j'ai conservé des feuilles 4 à 11 de la 1er version) macro : Transfert_feuilles

3/ je sélectionne, grâce à la formule de C11 de la feuille Test, aléatoirement certains des numéros copiés sur la feuille 4 ;macro : colorisation

4/ je supprime les lignes non coloriées (inutiles pour la suite)
macro : Supprime_ligne_Sans_Couleur

5/ j'efface la couleur sur ces lignes sélectionnées ;
macro : Supression_Mise_En_Forme

6/ je protège la feuille 4 seules les cellules de la plage ("E2:Q21") pourront être modifiées.
Donc j'ai fait une macro pour déverrouiller les cellules de cette plage et ensuite protéger la feuille; macro : Deverrouiller_cellule_Proteger_Feuille

7/ j'envois le la feuille 4 et je conserve une copie (si jamais je ne désire plus conserver de copie il me suffira de transformer « Kill chemin & "\" & nom » en commentaire, non ?); macro : Envoi_Feuille
Mon pb à présent c'est que j'aimerai conserver la variation de couleur de la plage de cellule ("H2:M21") si OK en vert et KO en rouge. La macro le faisait, jusqu'à ce que je mette celle pour la protection de la feuille...et à présent j'ai ceci en jaune : cell.Font.ColorIndex = 50
Je préférerai ne pas avoir à mettre une mise en forme conditionnelle sur chaque cellule...

8/( nouvelle demande je l'avoue...) sur la feuille 4 je voudrai savoir s'il serait possible pour chaque ligne d'envoyer automatiquement un mail à une personne dont le nom serait dans la cellule E :
- si sur une ligne x au moins une des cellules ("Hx:Mx") a pour valeur KO avec dans se mail les informations contenues dans la ligne ("Ax:Ox")
- avec un autre recherchev à chaque nom correspondrait un mail...à moins qu'il soit possible de créer automatiquement des mails à partir de prénom+nom

9/ oui je voudrai bien protéger la feuille 1


- si c'est sur la feuille Service dois tu apporter des modifications après le transfert, si oui l'envoi doit être différé ou non ! je ne comprends pas de quelles modifications tu parles.- nombre de feuilles dans le classeur. Au total on en a 5 sur les feuilles analyse et contrôle il y aura d'autre tableau et des graphiques (je ne pense pas que ça va influer les macros.
- quelle est la feuille qui servira à l'envoi Service ou contrôle ! J'envois service
- Pour la colonne H avec OK ou KO pas de problème mais cette feuille est elle à l'origine verrouillée ou doit on la verrouiller pour l'envoi si c'est elle que l'on envoi, il serait judicieux de la verrouiller avec un mot de passe inclus dans le code, parce qu'avec une simple protection Outils/Protection le premier venu peut la ôter.
si tu souhaites un mot de passe lequel (tu peux me faire parvenir en message privé). Au départ la feuill4 n'est pas verrouillée, dans mon fichier du post précédent c'est une erreur (quand je testais j'ai dû oublier de la déverrouiller ...
C'est possible de mettre un mot de passe que je changerai par la suite ? si non je te communiquerai celui que j'aimerai par email.


Encore merci pour le temps que tu accordes à mon problème.

Elsie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

- si c'est sur la feuille Service dois tu apporter des modifications après le transfert, si oui l'envoi doit être différé ou non ! je ne comprends pas de quelles modifications tu parles.-

Tout simplement après avoir transféré les données via la macro Transfert_feuilles sur la feuille Service si j'ai bien tout compris tu vas apporter des modifications ou des compléments de saisise dans les colonnes E à Q, ensuite tu clic sur un bouton et là tu verrouilles la feuille et l'envoi, dans ce cas deux boutons 1 pour transférer ,coloriser et supprimer les lignes
deuxième bouton pour verrouiller et expédier la feuille.
Pour le mot de passe j'en mettrais un tout simple comme "Open" (Majuscule-minuscule) que tu changeras.

Dans weekend je te regarde tout cela mais tous les codes sont à revoir vu que des pages ont été supprimées, ce n'est pas comme pour les formules qui s'actualisent automatiquement, un code est figé.

pour la question 8, colonne E il y aura des adresse mail mais existe il des adresse en doublon !
doit on envoyer à toutes les adresses ou seulement à ceux qui ont KO en H ou M

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Autre chose, après expédition de ta feuille "Service" les cellules H2:M21 restent-elles toujours modifiables
0
Utilisateur anonyme
 
Bonsoir,

Oui elles restent modifiables, c'est pour cela que je les ai déverrouillés avant de protéger la feuille dans ma macro Deverrouiller_cellule_Proteger_Feuille

Pour les codes "à revoir" je les ai adaptés dans le dernier fichier que j'ai mis en ligne. Je pense que je n'ai pas fait d'erreurs.

http://www.cijoint.fr/cjlink.php?file=cj201005/cijNGBgcXb.xls

Elsie
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

J'ai étudié ton fichier, il est possible d'écrire le code différemment pour gagner en rapidité.
Par contre la feuille que tu envois est beaucoup trop lourde à cause des listes de validation qui couvre la totalité des plages H2 à M 65536 et Q2 à Q65536
le code dans la propriété de la feuille Service pour coloriser les saisies OK et KO n'est pas une bonne idée, c'est un facteur de ralentissement lors de l'envoi et oblige le destinataire d'activer les macro pour qu'il soit opérationnel à condition que le niveau de sécurité soit réglé sur moyen. S'il est réglé sur élevé l'activation des macros ne sera pas proposé et donc le code ignoré.
Mieux vaut passer avec une mise en forme conditionnelle classique. Il me reste deux trois choses à régler et je t'envoi une proposition
0
Utilisateur anonyme
 
Bonjour,

Dernière version de mon fichier :
http://www.cijoint.fr/cjlink.php?file=cj201005/cijccocxxq.xls

Pour coloriser les saisies OK KO j'ai plutôt utilisé la mise en forme conditionnelle, effectivement c'est mieux. Pour les listes déroulantes, heuu, ils y tiennent, donc je pense que si le doc est un peu lourd ce n'est pas grave.

Je ne sais pas quels sont les codes que tu as réécris mais j'aimerai que tu m'aides pour 2 choses s'il te plaît.

- J'aimerai que lorsque l'utilisateur clique sur le bouton « Diffusion » le fichier reste sur la feuille 1 et non que la feuille 3 s'active.

- Dans la dernière feuille de mon fichier, j'ai mis un code afin de pouvoir envoyer automatiquement un mail quand la colonne O (Demande de correction) est renseignée. Mais je n'ai pas réussi à adapter le code afin qu'il fonctionne pour l'ensemble des cellules ("O2:O21"). Alors j'ai mis autant de code que de lignes pour le moment...


Merci d'avance

Laure
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

Je pensais que tu abandonnais le projet.
J'ai revu tous le code, à la place de recopier les lignes concernant un service, et les coloriser pour ensuite extraire ces lignes en fonction du tirage aléatoire feuille Test, j'ai directement colorisé les lignes sur la feuille Tous et importé ces lignes sur la feuille Service.
Ensuite le fichier à expédié est verrouillé, expédié puis les lignes importées sur la feuille Service sont supprimé pour effectuer éventuellement un autre envoi ainsi que les couleurs sont effacées sur la feuille Tous.
On gagne énormément en rapidité.
Je jette un oeil sur ta nouvelle question et on en reparle

https://www.cjoint.com/?fCuY6rpoyV
0
Utilisateur anonyme
 
ok merci.
je vais regarder ton fichier.

Laure
0
Utilisateur anonyme
 
c'est plutôt dans la feuille Service que j'ai un code par ligne.
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Que veux tu faire, feuille Service, lorsqu'il y a un KO sur la ligne entre H et M, envoyer un mail via Outlook à l'adresse sur la même ligne colonne E !
0
Utilisateur anonyme
 
oui, un mail reprenant les éléments ko en fait. mais j'arrivais pas à faire la sélection... alors j'ai tout mis.

pour le moment j'ai mis les emails en E pour tester, quand je les aurais je comptais mettre les mails dans la colonne T et la E contiendrait les noms et avec un RechercheV ça les enverraient un peu comme la feuille 1.

je précise car je ne sais pas si c'est important pour le code

laure
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Comme je te l'ai déjà dit, un code VBA est figé, si tu dois modifier ton fichier pour mettre les adresses mails en T fait-le de suite cela peut changer la façon d'écrire le code.
Tu parle également de RECHERCHEV, la aussi il faut savoir qu'avec ce genre de fonction, il n'est pas possible de faire une recherche sur des colonnes négatives par rapport à la colonne de référence.
Autre chose, si tu mets ce code dans les propriétés de la feuille

Private Sub Worksheet_Change
Dés que tu auras sélectionné KO dans une cellule, il déclenchera l'envoi, faut pas faire d'erreur en cliquant sinon le destinataire ne va rien comprendre

Je te conseille de bien arrêter ton fichier avant de nous lancer sur un support évolutif, le rôle du forum est d'apporter un support technique, pas la réalisation de projet et encore moins de réécrire ou modifier des codes, comme je te l'ai également déjà dit nous sommes bénévoles pas les salarié de ta boite. Si je t'apporte mon concours bien que mes occupations me limitent, c'est que ton projet est pertinent.
0
Utilisateur anonyme
 
Bonsoir,

J'ai bien compris que vous étiez bénévole. Je débute en VBA alors oui je demande de l'aide. Je ne suis pas « salariée de ma boîte », je suis stagiaire. C'est gentil de bien vouloir m'aider mais les commentaires à coté, franchement je n'en vois pas l'intérêt.

Le fichier en question est arrêté, je n'ai peut être pas assez données d'explications mais dans ce cas autant me demander des précisions que de parler de support évolutif... quoi que oui ce fichier sera éventuellement amené à évoluer raison pour laquelle je tiens à comprendre les codes au cas où je devrai par la suite les réarranger.

OK les codes sont figés ; n'empêche qu'on peut les modifier, non ?

Private Sub Worksheet_Change
Dés que tu auras sélectionné KO dans une cellule, il déclenchera l'envoi, faut pas faire d'erreur en cliquant sinon le destinataire ne va rien comprendre


Oui là j'ai remarqué ce pb ; du coup j'ai restreint la zone d'exécution de la macro à une cellule de la colonne O et j'ai écrit autant de macro que de ligne. Pour ce qui est de la rechercheV, c'était une idée, je ne trouvais pas cela très pratique de devoir écrire des emails à chaque fois, mais bon...

Elsie
0