Bonjour,
Je suis novice dans le domaine, je commence à utiliser l'enregistreur de macro, mais j'ai une application qui dépasse ses possibilités je pense.
Je dois travailler des données annuelles (données en colonnes et dates en lignes) et constituer un reporting dans un tableau avec les mêmes données en colonnes et en lignes en ne retrouve plus que les mois.
Mes tableaux de données de bases (nombreux 70!) n'ont pour l'instant pas le même format (les données ne sont pas dans les mêmes colonnes et le premier janvier ne commence pas sur la même ligne (ce serait trop simple).
J'ai écrit le code suivant qui bloque sur la formule à la fin. J'ai utilisé la formule à partir d'une créée avec l'enregistreur (seconde macro : modform) dans laquelle j'ai inséré la variable P avec l'offset pour constituer la plage du mois de janvier, mais vb ne doit pas comprendre la valeur de P dans la formule.
voici ce que ça donne:
en dessous c'est la macro de base dont je me suis inspiré
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 SAISIR() ' ' SAISIR Macro ' Macro enregistrée le 08/06/2008 par BARRE ' Dim P As Range 'sélectionne la cellule de données pour janvier du paramètre choisi Dim cible As Range 'sélectionne la cellule du tableau récap pour janvier pour le paramètre choisi Dim x As Range 'sélectionne la cellule contenant la valeur maxi pour le paramètre choisi On Error Resume Next Set P = Application.InputBox("Sélectionnez la cellule de départ :", Type:=8) On Error GoTo 0 If P Is Nothing Then MsgBox "Sélection annulée" On Error Resume Next Set cible = Application.InputBox("Sélectionnez la cellule d'arrivée :", Type:=8) On Error GoTo 0 If cible Is Nothing Then MsgBox "Sélection annulée" On Error Resume Next Set x = Application.InputBox("Sélectionnez la contenant la valeur maxi :", Type:=8) On Error GoTo 0 If x Is Nothing Then MsgBox "Sélection annulée" cible.FormulaR1C1 = _ "=(COUNTIF(P:P.offset(30,0);"">X""))/(COUNTA(P:P.OFFSET(30,0)))" cible.Select End Sub
Merci d'avance de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub model_form() ' ' model_form Macro ' Macro enregistrée le 08/06/2008 par BARRE ' ' ActiveCell.FormulaR1C1 = _ "=(COUNTIF(R[-42]C[-2]:R[-3]C[-2],"">10""))/(COUNTA(R[-42]C[-2]:R[-3]C[-2]))" Range("D44").Select
Partager