Sub nommer_les_formes()
'Nomme les formes par le nom du pays / Numéro freeform dans colonne L, nom du pays dans colonne M

Dim nom_forme_freeform As String
Dim i As Integer

i = 1
Do While Cells(i, 12).Value <> ""
nom_forme_freeform = "Freeform " & Cells(i, 12)
Cells(i, 14) = nom_forme_freeform
ActiveSheet.Shapes.Range(Array(nom_forme_freeform)).Name = Cells(i, 13)
i = i + 1
Loop

End Sub

Sub Créer_la_carte()
'Crée la carte

Application.ScreenUpdating = False

'Crée la variable qui va enregistre tous les noms des shapes à grouper
Dim carte_a_copier(200)
num_carte_a_copier = 1

'Demande quelle carte souhaite-t-on générer
Do While Type_carte <> "G" And Type_carte <> "HOP" And Type_carte <> "OP"
Type_carte = InputBox("- Global -> G" & Chr(10) & "- Hors OP -> HOP" & Chr(10) & "- Opex -> OP", "Quelle carte souhaitez-vous générer ?")
Loop

'Nettoie l'onglet carte
Sheets("Carte").Select
Dim img As Object
For Each img In ActiveSheet.Shapes
If img.Name <> "Macro créer la carte" And img.Name <> "Macro copier la carte" Then
img.Delete
End If
Next

'Récupération des données
Sheets("Nombre d'actions").Select

Dim action(200, 8)
'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 nbre_action As Integer 'nombre d'actions totale prises en compte
Dim Pays_en_cours As String
Dim Type_logo As String

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)
action(nbre_action, 2) = Cells(i, 4)
action(nbre_action, 3) = Cells(i, 5)
action(nbre_action, 6) = Cells(i, 3)
action(nbre_action, 7) = Cells(i, 2)

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)
    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)
    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

'Copie la carte vierge dans l'onglet "carte"
    Select Case Type_carte
    Case Is = "G", "HOP"
    Sheets("Logo nbre action").Shapes("Carte Afrique vierge").Copy
    Case Is = "OP"
    Sheets("Logo nbre action").Shapes("Carte Afrique OP").Copy
    End Select
Sheets("Carte").Select
ActiveSheet.Paste
Selection.Left = 1
Selection.Top = 1
'Enregistre la forme dans la carte à copier
carte_a_copier(num_carte_a_copier) = Selection.Name
num_carte_a_copier = num_carte_a_copier + 1
'Enregistre la position du 1er pays hors carte
pos_pays_hors_carte = Selection.Height
'Mise en place des zones
Select Case Type_carte
    Case Is = "G", "HOP"
    Sheets("Logo nbre action").Shapes("Zone HS").Copy
    Case Is = "OP"
    Sheets("Logo nbre action").Shapes("Zones OP").Copy
    End Select
ActiveSheet.Paste
Selection.Left = 0
Selection.Top = 0
'Enregistre la forme dans la carte à copier
carte_a_copier(num_carte_a_copier) = Selection.Name
num_carte_a_copier = num_carte_a_copier + 1
'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
    Case Is = "HOP"
    Sheets("Logo nbre action").Shapes("Légende HOP et OP").Copy
    End Select
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(num_carte_a_copier) = Selection.Name
num_carte_a_copier = num_carte_a_copier + 1
End If

nbre_erreur = 0
For i = 1 To nbre_action
    'Définition des variables
    Pays_en_cours = action(i, 1)
    Pays_et_hxj = action(i, 1) & Chr(10) & action(i, 6)
    Select Case Type_carte
        Case Is = "HOP", "OP"
        Type_logo = "MA " & action(i, 4) & " - ME " & action(i, 5)
        Case Is = "G"
        Type_logo = "Global " & action(i, 8)
        End Select
    '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(num_carte_a_copier) = Selection.Name
    num_carte_a_copier = num_carte_a_copier + 1
    'é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
    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
        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

ActiveSheet.Shapes.Range(carte_a_copier).Group.Name = "Carte à copier"

End Sub

