Macro excel pour renvoie d'une plage donnée sur une feuille

Résolu
Anassber Messages postés 6 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour les Excelistes,

Je reviens vers vous pour m'économiser du temps pour faire une manipulation sur un ensemble de classeurs que j'ai à traiter. En effet, et comme expliquer dans le fichier https://www.cjoint.com/c/GCexGqcI6s1
J'ai des données relatives à un ensemble de villes sous forme de fiche par ville. chaque fiche est dans une feuille à part du classeur. Je veux, dans une feuille dite "population", avoir la population de toutes les villes (renvoyer la case M2 pour le nom de la ville, et la ligne 7 de la colonne B à X, pour l'évolution de la population). Je veux faire de même pour la consommation en eau potable de la ville (même concept que la population avec la ligne 23). J'espère être clair sur la consistance de la tâche souhaitée. En vous remerciant d'avance de votre retour, sincères remerciements

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Bien lu
    Proposition dans la journée
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    proposition code
    Option Explicit
    Option Base 1
    '---------------------------------------------------------------------------
    Sub socio_villes()
    Dim Cptr As Byte, Col As Byte
    Dim Ville As String, T_pop, T_eau, T_lig7, T_lig23
    ReDim T_pop(43, 24)
    ReDim T_eau(43, 24)
    ReDim T_lig7(1, 23)
    ReDim T_lig23(1, 23)

    '---------------- parcours les feuilles de ville
    For Cptr = 1 To 43
    'ville
    With Sheets(Cptr + 2)
    Ville = .Range("M2")
    '----population
    T_lig7 = .Range(.Cells(7, 2), .Cells(7, 24))
    'eau
    T_lig23 = .Range(.Cells(23, 2), .Cells(23, 24))
    '---collecte données annuelles
    For Col = 1 To 23
    'population
    T_pop(Cptr, 1) = Ville
    T_pop(Cptr, Col + 1) = Round(T_lig7(1, Col), 1)
    'consommation eau
    T_eau(Cptr, 1) = Ville
    T_eau(Cptr, Col + 1) = Round(T_lig23(1, Col), 0)
    Next
    End With
    Next
    '---------------------restitution population
    Sheets("population").Range("A3:X46") = T_pop
    Sheets("population").Range("A3:X46").Borders.Weight = xlThin
    '---------------------restitution consommation eau
    Sheets("consom").Range("A3:X46") = T_eau
    Sheets("consom").Range("A3:X46").Borders.Weight = xlThin
    End Sub



     Michel
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Durée d'exécution: env 4 à 5/100 secondes
      0
      1. Anassber Messages postés 6 Statut Membre > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Je ne sais pas comment vous exprimez mes remerciements. Je vous suis énormément reconnaissant. Vive la technologie!

        Merci beaucoup Michel
        0
    2. Anassber Messages postés 6 Statut Membre
       
      Juste une amélioration, les valeurs qu'on me remet dans les feuilles population et consom sont arrondies à 1 chiffre après la virgule, pour la population et 0 chiffre pour la consommation. comment faire pour avoir 3 chiffres après la virgule, pour les deux cas?

      Merci d'avance
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour

    'population
    T_pop(Cptr, 1) = Ville
    T_pop(Cptr, Col + 1) = Round(T_lig7(1, Col), 3)
    'consommation eau
    T_eau(Cptr, 1) = Ville
    T_eau(Cptr, Col + 1) = Round(T_lig23(1, Col), 3)
    0