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

Résolu/Fermé
Anassber Messages postés 6 Date d'inscription jeudi 2 mars 2017 Statut Membre Dernière intervention 7 juillet 2017 - 5 mars 2017 à 00:40
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 7 mars 2017 à 08:25
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
A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
5 mars 2017 à 08:51
Bonjour,

Bien lu
Proposition dans la journée
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 5/03/2017 à 11:12
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
5 mars 2017 à 12:21
Durée d'exécution: env 4 à 5/100 secondes
0
Anassber Messages postés 6 Date d'inscription jeudi 2 mars 2017 Statut Membre Dernière intervention 7 juillet 2017 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
6 mars 2017 à 13:16
Je ne sais pas comment vous exprimez mes remerciements. Je vous suis énormément reconnaissant. Vive la technologie!

Merci beaucoup Michel
0
Anassber Messages postés 6 Date d'inscription jeudi 2 mars 2017 Statut Membre Dernière intervention 7 juillet 2017
6 mars 2017 à 17:51
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
7 mars 2017 à 08:25
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