Excel -VBA, Modification d'une Macro

Bonjour,

Toutes les semaines je recois une liste de client.

J'ai mis un petit exemple ci joint le fichier s'appelle Download.

Quand je recois le download j'utilise ma Macro 1.

J'ouvre les 2 fichiers je me met sur Download et je fait ALT + F8.

Ce qui me donne le fichier ci-joint "Download après Macro".

Je voudrais modifier ma "Macro1".

2 grosses modifications sont :

1) Uniquement pour les Feuilles "Bronze", "Silver", "Gold", "Platinum", "PlatPlus", "Ambassador". Faire en sorte que les numeros de chambre ne revienne pas 2 fois dans les differentes feuilles. et je voudrais garder le numero de chambre dans la feuille du plus grand statut en suivant cette ordre du plus petit au plus grand :

BRONZE < SILVER < GOLD < PLATIN < PLPLUS < AMBASS

Exemple : si j'ai 2 clients dans la meme chambre, 1 silver et 1 gold. Je veux que le numero de chambre avec le nom du client soit placer que dans la feuille Gold.

2) J'ai mis des conditions dans les feuilles Water et Chocostrawb.

a) Pour Water: Uniquement pour les status Gold, Platin, PlPlus, Ambass

b) pour Chocostrawb: uniquement pour Platin, Plplus, Ambass.

Si les clients ont 2 differents statut mais tout deux eligible sont dans la meme chambre je voudrais les mettre sur la meme ligne.

Exemple: pour water : Si un Gold et un Ambass sont dans la meme chambre la Macro les met sur une ligne differente.

Doit - on recommencer une toute nouvelle macro plus simple ou on peut juste modifier celle la ?

Merci de votre soutien.


Bonjour,

J'ai d'abord essayer plusieurs functions Mais cela ne marche pas :

Ci-dessous ce que j'ai essayer de faire :

Sub main()

    With Worksheets(GetSheetName(Range("D:D").Value, Range("F:F").Value))
        MsgBox .Name
    End With

End Sub

Function GetSheetName(val1 As String, val2 As String) As String
    Select Case GetRank(UCase(val1)) - GetRank(UCase(val2))
        Case Is < 0
            GetSheetName = "GOLD"
        Case Is > 0
            GetSheetName = "Platin"
        Case Else
            GetSheetName = val1
    End Select
End Function
Function GetRank(val As String) As Long
    GetRank = Application.WorksheetFunction.Match(val, Array("Bronze", "Silver", "Gold", "Platin", "PlPlus", "Ambass"))
End Function
Function GetRank(val As String) As Long
    GetRank = Switch(val = "BRONZE", 0, _
                     val = "SILVER", 1, _
                     val = "GOLD", 2, _
                     val = "PLATIN", 3, _
                     val = "PLPLUS ", 4, _
                     val = "AMBASS", 5)
End Function
Function GetRank(val As String) As Long
    Select Case val
        Case "BRONZE"
            GetRank = 0
        Case "SILVER"
            GetRank = 1
        Case "GOLD"
            GetRank = 2
        Case "PLATIN"
            GetRank = 3
        Case "PLPLUS"
            GetRank = 4
        Case "AMBASS"
            GetRank = 5
    End Select
End Function
11download.zip (8.17 Ko)
12macro1.zip (29.81 Ko)
Rechercher des sujets similaires à "vba modification macro"