SUPER RESOLU - Macro qui fonctionne trop bien

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Encore un problème que je ne parviens pas à résoudre malgré mes recherches.
Besoin de votre aide,

Voici mon soucis :
J'ai adapté une macro que vous avez eu la gentillesse de me concocter :

Code:
Sub TransmissionRdV()
'
' TransmissionRdV Macro
'

'
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    For i = 1 To 40
    Sheets("RdV agent").Select
    Range("A3").Select
    ActiveCell.FormulaR1C1 = i
    Call suivRdVagent
    ActiveSheet.Unprotect Password:="mdp"
    
    Sheets("RdV agent").Copy
    ActiveSheet.Shapes.Range(Array("Button 1")).Select
    Selection.Delete
    Selection.Cut
    
    Range("B1:C1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[2]C[-1]=0,"""",CONCATENATE(LOOKUP(R[2]C[-1],Clients),"" "",LOOKUP(R[2]C[-1],Clients1)))"
    Range("B1:C1").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Dim nom As String
    nom = Range("A3") & "-" & Range("B1") & "-" & Format(Date, "ddmmyyyy") & ".xls"
    ChDir _
        "C:\Users\bellivier.l\Desktop\Facturation\Agents RdV transmis\"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\bellivier.l\Desktop\Facturation\Agents RdV transmis\" & Range("A3") & "-" & Range("B1") & "-" & Format(Date, "ddmmyyyy") & ".xls" _
        , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    rep = MsgBox("Votre fichier est sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
    
    ActiveWindow.Close
    ActiveSheet.Protect Password:="mdp", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
    Next i
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

Elle fonctionne super bien ..... trop bien même

En effet, elle me créé des classeurs consciencieusement de 1 à 40 comme demandé en début de code : For i = 1 To 40

Mais voilà, dans ma feuille "Données", là où la macro va chercher les numéros de 1 à 40, mes numéros clients ne se suivent pas et j'ai besoin que seuls les numéros existants soient traités.

Par exemple, dans cette feuille "donnée", seuls les numéros 1 8 9 etc. sont existants et ça peut changer.

Pourriez-vous m'aider ? (j'exécute la macro à partir de la feuille "RdV agent"

Je joins un fichier test, en cas de besoin, le mot de passe est mdp.

Avec un grand merci, je vous souhaite une bonne journée et un beau WE :)
Amicalement,
caliméro,
 

Pièces jointes

  • Test forum.xlsm
    279.3 KB · Affichages: 35
  • Test forum.xlsm
    279.3 KB · Affichages: 42
  • Test forum.xlsm
    279.3 KB · Affichages: 44
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro qui fonctionne trop bien

Le but est de faire un classeur qui fait office de relevé des rendez-vous pour un agent.

Par exemple, dans la feuille "suivRdV", il y a des rendez-vous pour l'agent 1
j'ai limité pour le test mais il peut y avoir dans cette même feuille des rendez pour les autres agents qui sont dans la feuille "Données".

Donc, le but est de créer un classeur par agent en tenant en compte des numéro des agents colonne B de la feuille "Données".

Je dirais même que l'idéal, serait que la macro me créé juste les classeurs pour les agents qui ont des Rendez-vous.
Dans le cas présent,juste le numéro 1.

J'espère que je m'explique bien mais je ne suis pas sûr LOL.

Je reste à votre écoute pour compléments et je peux même vous appeler au téléphone si besoin.
Amicalement,
Lionel (caliméro)
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Macro qui fonctionne trop bien

Re

Si j'ai bien compris : A tester

Code:
Sub TransmissionRdV()
'
' TransmissionRdV Macro
'


'
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    'For i = 3 To Sheets("Données").Range("A" & Rows.Count).End(xlUp).Row
    'Sheets("RdV agent").Select
    Set dico = CreateObject("Scripting.dictionary")
    For n = 4 To Sheets("RdV agent").Range("A" & Rows.Count).End(xlUp).Row
     x = Sheets("RdV agent").Range("A" & n)
     dico(x) = x
    Next
    a = dico.keys
    For n = LBound(a) To UBound(a)
    Range("A3").Select
    ActiveCell.FormulaR1C1 = a(n)
    Call suivRdVagent
    ActiveSheet.Unprotect Password:="mdp"
'..............
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro qui fonctionne trop bien

Re

Vous êtes vraiment top LOL,
ça marche très bien, j'ai juste modifié comme suit :

For n = 3 To Sheets("Données").Range("B" & Rows.Count).End(xlUp).Row
x = Sheets("Données").Range("B" & n)

Il reste juste une "cerise" sur le gâteau :
La macro créé des classeurs pour tous les numéros d'agents de la feuille "données".

Dans le classeur que je joins, j'ai volontairement mis des rendez-vous pour 3 agents, le 1, 24 et 36 et, si c'est possible, j'aimerai que la macro ne créé pas de classeur pour les autres puisque sans objet, c'est à dire pour ceux pour lesquels la feuille "RdVagent" apparaît vide (à partir de la ligne 6 incluse) après exécution du code "Call suivRdVagent".

Mais c'est déjà très bien comme ça et je vous remercie vraiment de votre précieuse aide.
Amicalement,
Lionel,
 

Pièces jointes

  • Test forum.xlsm
    282.5 KB · Affichages: 31
  • Test forum.xlsm
    282.5 KB · Affichages: 36
  • Test forum.xlsm
    282.5 KB · Affichages: 29
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro qui fonctionne trop bien

Red,

J'avais testé sans modifier ton code et je viens de le refaire.
Le soucis et qu'il me créé pour le premier agent et le dernier de la feuille "Données" mais pas pour ceux entre les deux.

C'est pour cela que j'avais essayé de modifier un peu.
 

Pièces jointes

  • Test forum.xlsm
    286.7 KB · Affichages: 27
  • Test forum.xlsm
    286.7 KB · Affichages: 34
  • Test forum.xlsm
    286.7 KB · Affichages: 31
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re : Macro qui fonctionne trop bien

Bonjour PierreJean,
Bonjour à toutes et à toutes,

ça marche super ...... Merci tu me rends là un grand service dans mon travail. Merci.
Je t'ai pris beaucoup de temps .... à moi maintenant de tenter de comprendre le code ... grâce à vous tous, j'avance doucement mais j'avance LOL

J'ai une dernière questions sur ce sujet mais ce n'est pas un soucis.

Mes clients, très souvent ont des versions anciennes d'excel et principalement 97/2003.

Pour qu'ils puissent travailler sur mon classeur, j'enregistre donc sous 97/2003.

A chaque enregistrement, excel me demande de vérifier la compatibilité et je dois donc cliquer sur "continuer" comme il m'arrive d'avoir plus de 100 classeurs à envoyer, ce serait parfait si je pouvais ne pas avoir à le faire.

J'ai essayé de modifier le code :
Code:
ChDir _
        "C:\Users\bellivier.l\Desktop\Facturation\Agents RdV transmis\"
    [B]ActiveWorkbook.CheckCompatibility = False[/B]
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\bellivier.l\Desktop\Facturation\Agents RdV transmis\" & Range("A3") & "-" & Range("B1") & "-" & Format(Date, "ddmmyyyy") & ".xls" _
        , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

Mais rien à faire pour éviter ça. Vérifier la compatibilité.jpg

Si cela ne te prends pas trop de temps, pourrais-tu me dire ce qu'il faut que je modifie ?

Merci PierreJean, c'est déjà super
Amicalement,
Lionel,
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
312
Réponses
14
Affichages
1 K

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 864
dernier inscrit
abderrashmaen