Bonjour à tous,
Je suis débutant en VBA, je réalise une macro dans un but professionnel et peut-être pourrez vous m'aider sur mon problème actuel.
J'ai des tableaux contenant un ensemble de données statistiques sous Excel. Chaque donnée représente un indicateur statistique qui est déterminée selon une commune et l’attribut d'un critère.
Nombre de personnes
-20 ans 20-60 ans + de 60 ans
Commune 1 10 40 5
Commune 2 20 30 30
L'ensemble de ces données sont contenues dans plusieurs tableurs, dont l'organisation interne peut être très différente. (Modification de l'orientation Lignes-Colonnes, etc.)
Dans le but de réorganiser ces données, je souhaite assigner un identifiant unique à chacune de ces donnée statistique, qui serait la combinaison d'un identifiant de l'indicateur, d'un identifiant de commune, et d'un identifiant de critère (ou plus précisément de son attribut).
Je désire donc remplacer toutes les cellules de mon tableau, afin de pouvoir générer ces identifiants. Dans l'absolu je souhaiterais donc arriver au tableau suivant :
Nombre de personnes (id =1)
-20 ans(id =1) 20-60 ans(id =2) +de 60ans (id =3)
Commune 1 (Id=1) 111 112 113
Commune 2 (Id=2) 121 122 123
Dans ce but, j'ai déjà crée une macro permettant d'attribuer un identifiant à chaque élément différent qui compose une donnée, quelque soit la forme de mon tableau. En résumé cela ressemble à ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Sub Macro1()
Dim Monexcel As Application
Dim Monclasseur As Workbook
Dim Mafeuille As Worksheet
Dim p As Integer
Set Monexcel = New Excel.Application
Monexcel.ReferenceStyle = xlR1C1
Set Monclasseur = ActiveWorkbook
Set Mafeuille = Monclasseur.Worksheets(1)
Set donnees1 = Application.InputBox("Selectionnez la plage souhaitée (sans les entêtes de ligne ou de colonnes).", Type:=8)
donnees1.Interior.ColorIndex = 6
donnees1.Select
p = 1
'Pour chaque cellule de la colonne
For Each donnees1 In Selection
'récupération de la valeur
donnees1.Value = p
p = p + 1
Next
End Sub |
Dans une macro plus détaillée, je repète alors cette action autant de fois que nécessaire.
Pour le moment je n'ai donc que le tableau suivant :
Nombre de personnes (id =1)
-20 ans(id =1) 20-60 ans(id =2) +de 60ans (id =3)
Commune 1 (Id=1) 10 40 5
Commune 2 (Id=2) 20 30 30
Désormais, je voudrais attribuer à l'ensemble de mes données statistiques leur identifiant final, qui correspond donc au croisement des cellules des colonne et des lignes auxquelles viennent d'être associées les identifiants de commune, d'indicateur, et d'attribut de critères.
De fait, je cherche à passer du tableau 2 au tableau 3.
Essentiel : A noter que comme chaque tableau peut être organisé différemment, je ne peut pas sélectionner de cellule de façon absolue. Il me faut donc faire référence aux cellules qui viennent d'être précédemment modifiées.
Ma question est donc là. Comment faire référence à ces cellules ?
J'ai pensé à la faire référence aux cellules les plus proches de chaque plages concernées (Les plages correspondant à l'indicateur, aux communes, et aux attributs de critère), mais je ne vois pas comment cela est possible.
Merci à ceux qui auront lu mon pavé, et ceux qui m'aideront.
En espérant avoir été assez clair, car vu de l'extérieur, cela ne doit pas être évident.
Partager