Transformer une inputbox en une boucle

Bonjour à tous,

J'aurais besoin de votre aide pour transformer l'inputbox de ma macro en une boucle.

Pour faire simple : la macro que j'utilise génère une carte dans la feuille "Carte" à partir des données stockées dans la feuille "Nombre d'actions" et des formes pré-enregistrés dans la feuille "Logo nbre action". Lorsque je lance la macro, une inputbox apparaît et me propose de créer soit la carte "G", soit la carte "HOP", soit la carte "OP".

Jusqu'à maintenant j'utilisais la macro en entrant d'abord la réponse "G", puis je récupérais la carte pour la coller sur un PPT, puis je relançais la macro pour faire de même avec la réponse "HOP" et enfin avec la réponse "OP". Pour gagner du temps, je souhaite désormais retirer cette inputbox pour générer directement les 3 cartes côte à côte.

Donc en gros j'aimerais :

1- créer une boucle (for ?) pour que quand je lance la macro ça me fasse l'opération entière pour les 3 cas (''G" puis "HOP" puis ''OP'')

2- faire en sorte que chaque carte générée s'affiche côte à côte sur la feuille "Carte" (donc les repositionner pour que le coin supérieur gauche soit respectivement en A3 pour la carte ''G'', en J3 pour la carte ''HOP'' et en S3 pour la carte ''OP''). Le bouton "créer la carte" passerait alors en A1.

3- que ça ne groupe pas les 3 cartes ensemble a la fin de l'opération mais que chaque carte soit bien groupée (avec toutes les données qu'il y a dessus) individuellement, sous les noms "carte à copier 1", "carte à copier 2" et "carte à copier 3".

Vous trouverez la macro initiale sur le fichier excel (anonymisé) joint. Cette macro a été réalisée par mon prédécesseur qui était bien plus à l'aise en VBA que moi-même, d'où mon appel à l'aide comme je ne parviens pas à adapter la macro moi-même malgré mes tentatives...

Je vous remercie !

J'ai mis un peu plus de commentaires sur la macro pour simplifier sa lecture.

J'ai également précisé son architecture, que voici :

Phase 1 - Préparation

Phase 2 - Récupération des données

Phase 3 - Réalisation de la carte (Partie 1 : préparation de la carte / Partie 2 : mise en place des étiquettes sur la carte)

L'objectif est donc de répéter la phrase 3 pour que les 3 cartes apparaissent côte à côte, chacune groupée individuellement avec les éléments qui lui sont ajoutés durant l'opération (étiquettes, légende, zone complémentaire).

J'ai essayé d'être le plus clair possible mais n'hésitez pas si vous avez des questions.

Merci à vous.

J'ai essayé de bidouiller le code suivant mais sans succès, je n'arrive pas à faire fonctionner la macro... need some help svp haha

Sub Créer_la_carte()
'Crée la carte

'ARCHITECTURE DE LA MACRO :
'I - PREPARATION
'II - RECUPERATION DES DONNEES
'III - REALISATION DE LA CARTE
    'PARTIE 1 : PREPARATION DE LA CARTE
    'PARTIE 2 : MISE EN PLACE DES ETIQUETTES SUR LA CARTE

' I - PREPARATION

'Crée la variable qui va enregistre tous les noms des shapes à grouper
Select Case numéro_carte_a_copier
    Case "G"
    Dim carte_a_copier_1(500)
    num_carte_a_copier_1 = 1
    Case "HOP"
    Dim carte_a_copier_2(500)
    num_carte_a_copier_2 = 1
    Case "OP"
    Dim carte_a_copier_3(500)
    num_carte_a_copier_3 = 1
End Select

'Do While type_carte = "G" Or "HOP" Or "OP"

    'Nettoie l'onglet carte
    Sheets("Carte").Select
    Range("A3", "AA40").Delete

' II - RECUPERATION DES DONNEES

    Sheets("Nombre d'actions").Select

'action(n° de l'action, 1=pays, 2=actions MA, 3=actions ME, 4=type MA, 5=type ME, 6=hommesxjours, 7=total action par pays pour G, 8 = type TOTAL)
    Dim action(200, 8)
    Dim nbre_action As Integer 'nombre d'actions totale prises en compte
    Dim Pays_en_cours As String 'pays/ligne en cours de traitement
    Dim Type_logo As String 'type de logo selon type d'action (MA ou ME)

If type_carte = "G" And type_carte = "HOP" And type_carte = "OP" Then

    Select Case type_carte
        Case "G"
        I = 4
        Case "HOP"
        I = 56
        Case "OP"
        I = 107
        End Select
    nbre_action = 1
    Do While Cells(I, 1) <> ""
action(nbre_action, 1) = Cells(i, 1) 'sur la feuille "nombre d'action", renvoie à la colonne pays
action(nbre_action, 2) = Cells(i, 4) 'sur la feuille "nombre d'action", renvoie à la colonne MA
action(nbre_action, 3) = Cells(i, 5) 'sur la feuille "nombre d'action", renvoie à la colonne ME
action(nbre_action, 6) = Cells(i, 3) 'sur la feuille "nombre d'action", renvoie à la colonne HxJ
action(nbre_action, 7) = Cells(i, 2) 'sur la feuille "nombre d'action", renvoie à la colonne NB

'Arrondit le nombre total d'action par pays pour le cas G (permettra sélection du bon logo sur la carte)    
    If type_carte = "G" Then
    Select Case action(nbre_action, 7) 
        Case ""
        action(nbre_action, 8) = 0
        Case 1 To 3
        action(nbre_action, 8) = 3
        Case 4 To 6
        action(nbre_action, 8) = 6
        Case Is >= 7
        action(nbre_action, 8) = 7
        End Select
    End If

    If type_carte = "HOP" Or type_carte = "OP" Then
    Select Case action(nbre_action, 2) 'pour les actions MA
        Case ""
        action(nbre_action, 4) = 0
        Case 1 To 3
        action(nbre_action, 4) = 3
        Case 4 To 6
        action(nbre_action, 4) = 6
        Case Is >= 7
        action(nbre_action, 4) = 7
        End Select
    Select Case action(nbre_action, 3) 'pour les actions ME
        Case ""
        action(nbre_action, 5) = 0
        Case 1 To 3
        action(nbre_action, 5) = 3
        Case 4 To 6
        action(nbre_action, 5) = 6
        Case Is >= 7
        action(nbre_action, 5) = 7
        End Select
    End If

    I = I + 1
    nbre_action = nbre_action + 1
    Loop
    nbre_action = nbre_action - 1

' III - REALISATION DE LA CARTE

    'PARTIE 1 : PREPARATION DE LA CARTE

'Copie la carte vierge dans l'onglet "carte"
Select Case type_carte
    Case Is = "G"
    Sheets("Logo nbre action").Shapes("Carte Afrique vierge").Copy
    Sheets("Carte").Select
    ActiveSheet.Paste 
    Selection.Left = 1
    Selection.Top = 3
    'Enregistre la forme dans la carte à copier
    carte_a_copier_1(num_carte_a_copier_1) = Selection.Name
    num_carte_a_copier_1 = num_carte_a_copier_1 + 1
    'Enregistre la position du 1er pays hors carte (pays dans la liste de la feuille "nombre d'action" qui sont hors Afrique/Moyen-Orient)
    pos_pays_hors_carte_1 = Selection.Height

    Case Is = "HOP"
    Sheets("Logo nbre action").Shapes("Carte Afrique vierge").Copy
    Sheets("Carte").Select
    ActiveSheet.Paste
    Selection.Left = 100
    Selection.Top = 3
    'Enregistre la forme dans la carte à copier
    carte_a_copier_2(num_carte_a_copier_2) = Selection.Name
    num_carte_a_copier_2 = num_carte_a_copier_2 + 1
    'Enregistre la position du 1er pays hors carte (pays dans la liste de la feuille "nombre d'action" qui sont hors Afrique/Moyen-Orient)
    pos_pays_hors_carte_2 = Selection.Height

    Case Is = "OP"
    Sheets("Logo nbre action").Shapes("Carte Afrique OP").Copy
    Sheets("Carte").Select
    ActiveSheet.Paste
    Selection.Left = 200
    Selection.Top = 3
    'Enregistre la forme dans la carte à copier
    carte_a_copier_3(num_carte_a_copier_3) = Selection.Name
    num_carte_a_copier_3 = num_carte_a_copier_3 + 1
    'Enregistre la position du 1er pays hors carte (pays dans la liste de la feuille "nombre d'action" qui sont hors Afrique/Moyen-Orient)
    pos_pays_hors_carte_3 = Selection.Height
End Select

'Mise en place des zones complémenntaires prévues pour chaque carte
If type_carte = "OP" Then
'    Case Is = "G"
'    Sheets("Logo nbre action").Shapes("Zone HS").Copy
'    ActiveSheet.Paste
'    Selection.Left = 1
'    Selection.Top = 3
'    carte_a_copier_1(num_carte_a_copier_1) = Selection.Name
'    num_carte_a_copier_1 = num_carte_a_copier_1 + 1
        Sheets("Logo nbre action").Shapes("Zones OP").Copy
    ActiveSheet.Paste
    Selection.Left = 200
    Selection.Top = 3
    carte_a_copier_3(num_carte_a_copier_3) = Selection.Name
    num_carte_a_copier_3 = num_carte_a_copier_3 + 1
End If

'Mise en place de la légende
If type_carte <> "OP" Then
    Select Case type_carte
        Case Is = "G"
        Sheets("Logo nbre action").Shapes("Lég globale").Copy
        ActiveSheet.Paste
        Selection.Top = ActiveSheet.Shapes("Carte Afrique vierge").Height - Selection.Height - 5
        Selection.Left = 150 - Selection.Width / 2
        'Enregistre la forme dans la carte à copier
        carte_a_copier_1(num_carte_a_copier_1) = Selection.Name
        num_carte_a_copier_1 = num_carte_a_copier_1 + 1

        Case Is = "HOP"
        Sheets("Logo nbre action").Shapes("Légende HOP et OP").Copy
        ActiveSheet.Paste
        Selection.Top = ActiveSheet.Shapes("Carte Afrique vierge").Height - Selection.Height - 5
        Selection.Left = 250 - Selection.Width / 2
        'Enregistre la forme dans la carte à copier
        carte_a_copier_2(num_carte_a_copier_2) = Selection.Name
        num_carte_a_copier_2 = num_carte_a_copier_2 + 1
    End Select
End If

    'PARTIE 2 : MISE EN PLACE DES ETIQUETTES SUR LA CARTE

nbre_erreur = 0 'pour les pays hors de la carte
For I = 1 To nbre_action
    'Définition des variables pour la mise en place des différents types de logos sur la carte
    Pays_en_cours = action(I, 1)
    Pays_et_hxj = action(I, 1) & Chr(10) & action(I, 6)

    Select Case type_carte
        Case Is = "G"
        Type_logo = "Global " & action(I, 8)
        'copie du logo
        Sheets("Logo nbre action").Shapes(Type_logo).Copy
        ActiveSheet.Paste
        'rennomage du logo en "nbre_action pays"
        Selection.Name = "nbre_action " & Pays_en_cours
        'Enregistre la forme dans la carte à copier
        carte_a_copier_1(num_carte_a_copier_1) = Selection.Name
        num_carte_a_copier_1 = num_carte_a_copier_1 + 1

        Case Is = "HOP"
        Type_logo = "MA " & action(I, 4) & " - ME " & action(I, 5)
        'copie du logo
        Sheets("Logo nbre action").Shapes(Type_logo).Copy
        ActiveSheet.Paste
        'rennomage du logo en "nbre_action pays"
        Selection.Name = "nbre_action " & Pays_en_cours
        'Enregistre la forme dans la carte à copier
        carte_a_copier_2(num_carte_a_copier_2) = Selection.Name
        num_carte_a_copier_2 = num_carte_a_copier_2 + 1

        Case Is = "OP"
        Type_logo = "MA " & action(I, 4) & " - ME " & action(I, 5)
        'copie du logo
        Sheets("Logo nbre action").Shapes(Type_logo).Copy
        ActiveSheet.Paste
        'rennomage du logo en "nbre_action pays"
        Selection.Name = "nbre_action " & Pays_en_cours
        'Enregistre la forme dans la carte à copier
        carte_a_copier_3(num_carte_a_copier_3) = Selection.Name
        num_carte_a_copier_3 = num_carte_a_copier_3 + 1
    End Select

    'écriture du pays dans le rectangle
    ActiveSheet.Shapes("Pays " & Type_logo).Select
    Select Case type_carte
        Case Is = "HOP", "OP"
        Selection.Text = Pays_en_cours
        Selection.Name = "Pays " & Pays_en_cours
        Case Is = "G"
        Selection.Text = Pays_et_hxj
        Selection.Name = "Pays " & Pays_en_cours
        End Select

    'écriture du bon nombre d'action dans l'étiquette
    Select Case type_carte
        Case Is = "HOP", "OP"
            If action(I, 2) <> "" Then
                ActiveSheet.Shapes("NbreMA " & Type_logo).Select
                Selection.Text = action(I, 2)
                Selection.Name = "NbreMA " & Pays_en_cours
            End If
            If action(I, 3) <> "" Then
                ActiveSheet.Shapes("NbreME " & Type_logo).Select
                Selection.Text = action(I, 3)
                Selection.Name = "NbreME " & Pays_en_cours
            End If
        Case Is = "G"
            ActiveSheet.Shapes("Nbre " & Type_logo).Select
            Selection.Text = action(I, 7)
            Selection.Name = "Nbre " & Pays_en_cours
        End Select

    'placer le logo sur le pays
    Set Nombre_Pays = ActiveSheet.Shapes("nbre_action " & Pays_en_cours)
    On Error Resume Next
    Err = 0
    Set Forme_Pays = ActiveSheet.Shapes(Pays_en_cours)
    If Err = 0 Then 'Si le pays existe sur la carte
        Nombre_Pays.Left = Forme_Pays.Left + Forme_Pays.Width / 2 - Nombre_Pays.Width / 2
        Nombre_Pays.Top = Forme_Pays.Top + Forme_Pays.Height / 2 - Nombre_Pays.Height / 2
    Else ' sinon = si le pays n'est pas sur la carte (le positionne à gauche de la carte)
        Set Forme_Pays = ActiveSheet.Shapes("Carte Afrique vierge")
        'Set Nombre_Pays = ActiveSheet.Shapes.Range(Array("nbre_action " & Pays_en_cours))
        Nombre_Pays.Left = Forme_Pays.Left - Nombre_Pays.Width / 2 + 50
        Nombre_Pays.Top = pos_pays_hors_carte - Nombre_Pays.Height - 5
        nbre_erreur = nbre_erreur + 1
        pos_pays_hors_carte = Nombre_Pays.Top
    End If
Next I

'grouper l'ensemble des éléments sur la carte enregistrés dans "carte_a_copier"
Select Case carte_a_copier
    Case Is = "G"
    ActiveSheet.Shapes.Range(carte_a_copier_1).Group.Name = "Carte à copier 1"
    Case Is = "HOP"
    ActiveSheet.Shapes.Range(carte_a_copier_2).Group.Name = "Carte à copier 2"
    Case Is = "OP"
    ActiveSheet.Shapes.Range(carte_a_copier_3).Group.Name = "Carte à copier 3"
End Select

End If

End Sub
Rechercher des sujets similaires à "transformer inputbox boucle"