Simplifer macro2

Bonjour,

Bon > quelques changements :

- feuille "BASE DE SAISIE" > la plage AR1:AR10 sert à comparer les adresses courriel avec la colonne AL > si ça correspond > colle AS voisine dans la colonne A > si la ligne de la colonne AL est vide > la ligne correspondante de la colonne A sera vidée ...

C'est la macro "numérique qui fait cela > elle est appelée via la macro "essai3" > à chaque fois que l'on clique sur "Tous les agents" de la Feuil1 ou 2 ...

Le résumé > l'on clique sur "Tous les agents" et les infos des 10 agents potentiels seront placés dans les blocs tableau selon le mois sélectionné ...

Les macros E1 et E2 ont été supprimées > essai3 fait tout cela beaucoup plus rapidement ...

Je te laisse examiner cela ...

Je reste à l'affût ...

ric

merci ric,

je test ça tout à l'heure. Je te tiens au courant dans l'après-midi

Bonjour Ric,

Je viens de tester la macro et les données qu'elles collent dans les blocs agents ne sont pas les bonnes mais sinon elles les collent sur la bonne ligne et beaucoup plus rapidement.

Concernant ma macro "numequipe" je tiens à garder mon modèle car il arrive parfois que les agents remplissent avec une erreur dans leur adresse mail et donc je l'associe à leur numéro d'agent comme ceci :

Sheets("BASE DE SAISIE").Select
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
Range("AL24", Range("AL5470").End(xlUp)).Select
Dim Cel As Range
For Each Cel In Range("AL24", Range("AL5470").End(xlUp))

' feuil1
If Cel = "hubert@excel.fr" Or cel = "gubert@excel.fr" Then
Cel.Offset(, -37).Value = ("1")
ElseIf Cel = "josianne@excel.fr" Or Cel = "josiane@excel.fr" Then
Cel.Offset(, -37).Value = ("2")

l'avantage de cette méthode, c'est qu'il garde toujours le même numéro, de plus vu que ces informations sont dans une macro et non dans une feuille, personne ne peut modifier les données car j'ai mis un mot de passe pour accéder aux macros.

Dans ta méthode d'attribution de numéro d'agent (si j'ai bien compris), si jamais il y a une erreur de saisie, il faut créer un autre numéro associé à l'agent car c'est par incrémentation, non??

petite question, à quoi correspond le terme "AG_" dans le code du choix du bloc agent?

Set BlocAgent = Range("AG_" & Z).Offset(LeMois, 1)

Merci

Bonjour,

Set BlocAgent = Range("AG_" & Z).Offset(LeMois, 1) > AGxx sont les champs nommés > regarde le menu Formules > Gestionnaire de noms ...

Pour la suite je regarde ...

ric

ok je viens de voir et en effet je comprends mieux.

Je cherchais dans les macros mais en effet il est vrai que l'on peut nommer des plage de cellule ou cellule

Merci

Bonjour,

Je viens de tester la macro et les données qu'elles collent dans les blocs agents ne sont pas les bonnes

Je n'avais pas encore fait attention aux données collées, car le fichier était trop sommaire ...

Mais > effectivement > il n'y a que la 1re cellule du array qui se colle sur toute la plage de B à L ...

Je ne maîtrise pas trop les array > je crois que je vais faire une boucle ...

ric

Bonjour,

J'ai supprimé la variable BlocAgent et le code y référant > cela ne permettait pas de changer de feuille pour écrire les 10 agents ...

Je suis passé aussi par des champs nommés "D_x" pour les cellules à lire au haut de la feuille "BASE DE SAISIE" > au lieu des array "Cellule" et PLage" que ne réussissait pas à faire fonctionner ...

Maintenant ce sont les bonnes données qui se transfèrent ...

J'utilise toujours dans la feuille "BASE DE SAISIE" la plage AR1:AS10 pour gérer la rechercher (filtres) et l'écriture dans les blocs agent en Feuil1 et 2 ....

Je te laisse la macro "Numérique" > tu sembles bien comprendre ton besoin et comment l'appliquer ...

ric

Bonjour Ric, j'ai essayé la macro et en effet elle fonctionne bien. je n'ai pas eu le temps de la regarder en détail pour l'adaptation sur mon fichier car mon fils me réclame donc "super papa présent".

J'essaie de voir ce week-end et je te tiens au jus mais quoi qu'il en soit merci pour ton aide.

bonjour Ric,

comme prévu mon retour.

La macro fonctionne très bien pas de souci cependant,

j'ai bien compris que pour faire fonctionner cette macro il faut savoir quel agent on cherche pour connaitre les données recherchées (ce qui est logique) mais ces informations vont être recherchées sur la feuille "base de saisie" en fonction de ce qu'il y aura dans les colonnes "AQ" "AR" "AS" or comme je te l'avais écris je souhaitais que ce type d'info soit dans une macro afin d'éviter toute mauvaise manipulation qui pourrait modifier voir supprimer les renseignements dans ces colonnes.

c'est la raison principale de mon souhait à vouloir garder ma macro "numequipe".

Est -ce que tu penses qu'il est possible de mettre ces infos dans une macros ou est-ce qu'il vaut mieux mettre ces infos dans une autre feuille, la feuille "MACRO" par exemple et faire le lien avec les données de la colonne "A" de la feuille "base de saisie"tout en mettant une protection sur la feuille par la suite ?

merci

Bonjour,

Protéger des données sous Excel > ce n'est pas à toutes épreuves ...

Mais pour décourager les opportunistes > oui l'on peut mettre les adresses courriel (macros Numérique) directement dans le code ...

L'on peut même par la suite > mettre un mot de passe pour accéder à la modification du code ...

Par contre > ce sera à toi d'aller modifier le code si des adresses changent ...

Si cela te convient > je peux regarder cela ...

Le bout de macro que tu as proposé avec if et plusieurs Elseif pourraient être remplacés par un Array (liste) ...

Je reviens bientôt ...

ric

oui sur

L'on peut même par la suite > mettre un mot de passe pour accéder à la modification du code ...

c'est déjà fait car je suis le seul à intervenir dans le code et je ne veux pas de problème donc le mot de passe, c'est fait.

Par contre > ce sera à toi d'aller modifier le code si des adresses changent ...

c'est déjà le cas et je les fais comme montré sur un précédent message.

Si cela te convient > je peux regarder cela ...

je veux bien merci

Bonjour,

Si j'ai bien compris ton propos et selon l'ébauche de la macro "numequipe" > il pourait y avoir dans la feuille "BASE DE SAISIE" deux adresses mail différentes (un peu ou très différentes) se rapportant au même agent ...

Si c'est bien le cas > j'ai construit mon code correctement ...

Le principe > 3 array > AgentNom, AgentModif, AgentPseudo ...

Les 3 doivent être synchronisés > i.e. : AgentNom en 3e position correspond à l'AgentModif en 3e position et correspond aussi à l'AgentPseudo en 3e position ...

Toujours selon la 3e position > "frank" ou "frank@frank.net ou "3" doivent se suivre ...

Ou encore > "phillip.morice@cel.fr" ou "phillipe.morice@cel.fr" ou "LO-C1" ...

Examine cela > si tu y comprends quelque chose et > dans l'affirmative > si cela te convient ...

Si tu augmentais le nombre d'agents > en ajoutant les infos pertinentes dans les 3 array > le code devrait continuer à bien fonctionner ...

Sub numequipe()
Dim Cel As Range
Dim Agt As Integer
Dim AgentNom, AgentModif, AgentPseudo

   Application.ScreenUpdating = False

   AgentNom = Array("hubert@excel.fr", "josianne@excel.fr", "frank", "nicolas", "théo", "phillip.morice@excel.fr", "jean neymard", "david adata", "isa belle", "jean néplin")
   AgentModif = Array("hubert@excel.fr", "josianne@excel.fr", "frank@frank.net", "nicolas@nic.com", "théo", "phillip.morice@cel.fr", "jean neymard", "david adata", "isa belle", "jean néplin")
   AgentPseudo = Array("1", "2", "3", "4", "5", "LO-C1", "LO-C2", "LO-C3", "LO-C42", "LO-C5")

   With Sheets("BASE DE SAISIE")
      .Activate
      If .FilterMode = True Then .ShowAllData

      For Each Cel In Range("AL24", Range("AL" & Rows.Count).End(xlUp))
         If Cel <> "" Then
            For Agt = LBound(AgentNom) To UBound(AgentNom)
               If AgentNom(Agt) = Cel Or AgentModif(Agt) = Cel Then
                  .Cells(Cel.Row, "A") = AgentPseudo(Agt)
                  Exit For
               End If
            Next Agt
         Else
            .Cells(Cel.Row, "A").ClearContents
         End If
      Next Cel
   End With
   Sheets("Feuil1").Activate
End Sub

ric

Bonjour,

Si j'ai bien compris ton propos et selon l'ébauche de la macro "numequipe" > il pourait y avoir dans la feuille "BASE DE SAISIE" deux adresses mail différentes (un peu ou très différentes) se rapportant au même agent ...

c'est exactement ça.

Les 3 doivent être synchronisés > i.e.

internet explorer ???

AgentNon en 3e position correspond à l'AgentModif en 3e position et correspond aussi à l'AgentPseudo en 3e position ...

ok je comprends l'idée mais j'ai une petite question sur cette situation.... notamment sur la syntaxe.

si j'ai 2 agentsmodif en 2eme position qui correspondent à l'agentnom 2 ème position et qui lui même correspond à l'agentpseudo 2 ème position...

dois-je mettre ":", ";", ou "()" entre les 2 agentsmodif ??

je te pose cette question car d'une part je n'ai pas autant de connaissances que toi (pour le moment 😁) et je n'ai pas d'ordinateur à proximité.

c'est demain que je pourrais tester ça.

Bonjour,

Pour l'instant, le code n'est pas prévu pour cela > c'est toujours 1er, 1er et 1er > 2e, 2e et 2e > etc ...

Si tu as besoin de plus d'un "alias" > il faudra que je fasse quelques petites modifications ...

Combien est-ce que tu as besoin d'alias ? > quand je parle d'alias > je parles des AgentModif ...

Un AgentNom > son alias = AgentModif ...

AgentNom, AgentModif et AgentPseudo ont chacun 10 positions ...

C'est un peu comme une plage de 3 lignes et 10 colonnes ...

ric

bonjour ric,

j'ai un agent qui s'est trompé 7 fois sur sa propre boîte mail.

Bonjour,

Qu'est-ce qui t'empêche de faire CTRL+H (rechercher/remplacer) > et de remplacer cette adresse erronée dans la "base de saisie" ?

Sinon > 7 adresses > ça devient lourd à gérer et je ne suis pas sûr que j'ai le goût de me creuser le ciboulot pour un étourdi ...

Désolé d'être un peu méchant envers cet agent ...

ric

En effet rien ne m'en empêche, c'est juste qu'avec la saisie automatique, il peut exister un certains nombres de mauvaise saisies et j'avais dans ma macro lier toutes les mauvaise saisie à l'agent .

De ce fait, si jamais il ressaisissait une mauvaise adresse avec la saisie automatique, elle était automatiquement attribuée au bon agent.

Maintenant, il est vrai que je peux faire CTRL+H mais il faut espérer qu'il n'y est pas trop souvent de mauvaise saisie sinon je ferai une macro en amont qui corrigera la saisie.

Sinon > 7 adresses > ça devient lourd à gérer et je ne suis pas sûr que j'ai le goût de me creuser le ciboulot pour un étourdi ...

Ne t'inquiète pas, moi aussi ça m'avait saoulé de rajouter toutes les mauvaises saisies dans ma macro.

Désolé d'être un peu méchant envers cet agent ...

je comprends.

Je vois et test ça cet aprem.

Merci Ric

Bonjour,

il faut espérer qu'il n'y est pas trop souvent de mauvaise saisie sinon je ferai une macro en amont qui corrigera la saisie.

Dans ce cas > que penses-tu de l'idée d'un menu déroulant dans cette colonne afin qu'ils choisissent leur adresse au lieu de la taper ?

Seule la cellule ou la ligne sélectionnée verrait apparaître ce menu déroulant ...

ric

non c'est un formulaire Google et je rapatrie les données ssur Excel.

mais merci de la proposition

Bonjour,

Si tu penses à un autre critère pour identifier correctement l'agent au moment de l'importation ...

Je vais aussi regarder de mon bord afin d'identifier autant d'alias que nécessaire (sans limite autre que ta patience ) ...

ric

Rechercher des sujets similaires à "simplifer macro2"