Actualiser des données sur une carte de France

L_Bear

XLDnaute Nouveau
Bonjour à tous,

J'ai trouvé sur ce forum un fichier avec une carte de France dont les départements se colorient en fonction des valeurs d'une cellule.

Je l'ai un peu modifié pour qu'il corresponde à mes attentes et j'en suis content à une exception près.

Les valeurs des cellules doivent être entrées "à la main" dans l'onglet "répartition" pour que les départements se colorent, or j'aimerai que les cellules renvoient à un onglet de données que je mettrai à jour de temps en temps.

Le problème est que la mise à jour de ce fameux onglet (évolutions) ne "déclenche pas le code" et que du coup mes départements ne se colorent pas.

Comment pourrais-je rajouter un bouton "Mise à jour" qui permet de faire en sorte que tout s'actualise ?

Je ne sais pas si je suis clair...

En tout cas merci de votre aide !
 

Pièces jointes

  • Carte dyna-c.xlsm
    1.3 MB · Affichages: 144

L_Bear

XLDnaute Nouveau
Cela fonctionne si je change les valeurs dans le tableau du second onglet "à la main".
Or ce tableau comporte des données issues d'un tableau croisé dynamique normalement situé dans un troisième onglet (pas dans le document pour des raisons de confidentialité).

Donc quand je met à jour le TCD du 3eme onglet, le tableau du second onglet se met à jour, mais pas les couleurs des départements du premier onglet, d'où l'idée d'un bouton qui pourrait résoudre le problème.

Pourriez vous m'aider s'il vous plait ?
 
Dernière édition:

L_Bear

XLDnaute Nouveau
Bonjour,

Pour expliciter un peu plus le problème :

Le bouton effacer vide la colonne C de ses valeurs, et recolorie les départements en blancs.

Comment créer un bouton qui commande le remplissage de la colonne C en fonction des valeurs du deuxième onglet, et qui appelle la fonction qui colorie les départements ?

Merci de votre aide, et désolé pour le double post.
 

pierrejean

XLDnaute Barbatruc
Re
Modifie la macro comme suit
Code:
Private Sub BoutonEffacer_Click()
Dim Reponse As Variant
Dim PosCel As Byte
Application.EnableEvents = False
Reponse = MsgBox("Voulez-vous vraiment tout effacer?", vbYesNo, "Effacement")
If Reponse = vbYes Then
    Application.ScreenUpdating = False
    For PosCel = 0 To Range(Range("B2"), Range("B2").End(xlDown)).Offset(0, 1).Cells.Count - 1
        Range("C2").Offset(PosCel, 0).ClearContents
    Next PosCel
    ThisWorkbook.Sheets(1).Shapes("CarteFrance").Fill.ForeColor.RGB = 16777215  ' Blanc
    ThisWorkbook.Sheets(1).Shapes("Rectangle 5").Fill.ForeColor.RGB = 15773696   ' Bleu
    ThisWorkbook.Sheets(1).Shapes("Freeform 31").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 6").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 13").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 8").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 10").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 19").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 15").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 23").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 28").Fill.ForeColor.RGB = 10921638  ' Gris
    ThisWorkbook.Sheets(1).Shapes("Freeform 17").Fill.ForeColor.RGB = 10921638  ' Gris
    For i = 2 To 97
      ActiveSheet.Shapes.Range(Array(Cells(i, 2))).Select
      Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = ""
    Next
    Cells(2, 3).Select
    Application.ScreenUpdating = True
End If
Application.EnableEvents = True
For Each cel In Sheets("Evolutions").Range("C3:C" & Sheets("Evolutions").Range("C" & Rows.Count).End(xlUp).Row)
   ad = cel.Offset(-1).Address
   Sheets("Répartition").Range(ad) = cel.Value
Next
End Sub
 

L_Bear

XLDnaute Nouveau
Mon bouton effacer s'est donc transformé en un bouton "mettre à jour les données" en somme !
Mais à priori cela fonctionne bien sur ce document.

Dernière chose : dans mon document final l'onglet répartition comporte plusieurs colonnes, et les valeurs qui m’intéressent sont situées dans la colonne F. Je voudrais que le bouton les transfère dans la colonne C du premier onglet.

J'adapte donc le code ainsi :

Code:
For Each cel In Sheets("Evolutions").Range("F3:F" & Sheets("Evolutions").Range("F" & Rows.Count).End(xlUp).Row)
   ad = cel.Offset(-1).Address
   Sheets("Répartition").Range(ad) = cel.Value
Next

Mais évidement les valeurs arrivent dans la colonne F...
Comment faire ?

Merci pour votre aide !
 

L_Bear

XLDnaute Nouveau
Le départ est en décalé, donc je n'ai pas touché au offset.
La seule chose qui change c'est que maintenant les chiffres de l'onglet évolution sont en colonne F.

C'est surement simple mais je n'arrive pas à trouver.

Désolé pour la différence de fichier, j'ai du le tronquer pour cacher certaines colonnes.
 

Discussions similaires

Réponses
31
Affichages
2 K
Réponses
6
Affichages
2 K

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 850
dernier inscrit
Danigra