Aide Macro excell

C

Christophe

Guest
J'ai une petit question en VBA:
J'ai sur excell en A1 une formule, style "=NB.SI(Feuil1!A1:A8;Feuil2!A1)" Serais il possible en VBA de modifier cette formule avec un message box qui me donne la posibilite de changer Feuil1 en Feuil3 par exemple, le reste de la formule resterais inchange, j'aimerai juste que le message boxe s'ouvre et que j'entre Feuil4 et que ma formule de A1 sois alors modifie en "=NB.SI(Feuil4!A1:A8;Feuil2!A1)". Quand pensez vous, merci


Merci d'avance et mes meilleur voeux pour l'année 2003

Christophe
 
@

@+Thierry

Guest
Salut Christophe,

Encore un qui ne dit pas bonjour.... Tu fais çà aussi dans la vie ?

Pour te répondre, en espérant que ma remarque seras bien interprétée...

Option Explicit
Sub CompteSiPage()
Dim Page As String
Dim Formule As String
Page = InputBox("Indiquer le numéro de Feuille", "Page Number", 1)

Formule = "=COUNTIF(Feuil" & Page & "!A1:A8,Feuil2!A1)"

Worksheets("Feuil1").Range("C1").Formula = Formule
End Sub

Ici la formule sera écrite en Feuil1 C1 à toi de modifier en fonction....
Si tu cherches à faire çà par UserForm plutôt que par une simple InputBox
rendez-vous dans ce fil car j'y ai posté une mini Démo pour Didier qui lui dit toujours bonjour !! :) :
<http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=11908&t=11892>

Bonne Fin D'année D -0 H-10 M-02 S-07
@+Thierry
 
C

Christophe

Guest
Bonjour et bonne année a tous

thanks Thierry, ça marche, mais je trouve mon code assez long, jette y un coup d'oeil, tu pourrais peux etre le rendre plus facile, plus cour, merci

Option Explicit
Sub compteSiPage()
Dim Page As String
Dim Formule As String
Dim Formule1 As String
Dim Formule2 As String
Dim Formule3 As String
Dim Formule4 As String
Dim Formule5 As String
Dim Formule6 As String
Dim Formule7 As String
Dim Formule8 As String
Dim Formule9 As String
Dim Formule10 As String
Dim Formule11 As String
Dim Formule12 As String
Dim Formule13 As String
Dim Formule14 As String
Dim Formule15 As String
Dim Formule16 As String
Dim Formule17 As String
Dim Formule18 As String
Dim Formule19 As String
Dim Formule20 As String
Dim Formule21 As String
Dim Formule22 As String
Dim Formule23 As String
Dim Formule24 As String
Dim Formule25 As String
Dim Formule26 As String
Dim Formule27 As String
Dim Formule28 As String
Dim Formule29 As String
Dim Formule30 As String
Dim Maand As String


Page = InputBox("Indiquer le mois à controler", "Page Number", "januari")

Maand = "=" & Page & "!B1"
Formule = "=Countif(" & Page & "!R3C:R42C,Controle!RC1)"
Formule1 = "=Countif(" & Page & "!R3C[-1]:R42C[-1],Controle!RC1)"
Formule2 = "=Countif(" & Page & "!R3C[-2]:R42C[-2],Controle!RC1)"
Formule3 = "=Countif(" & Page & "!R3C[-3]:R42C[-3],Controle!RC1)"
Formule4 = "=Countif(" & Page & "!R3C[-4]:R42C[-4],Controle!RC1)"
Formule5 = "=Countif(" & Page & "!R3C[-5]:R42C[-5],Controle!RC1)"
Formule6 = "=Countif(" & Page & "!R3C[-6]:R42C[-6],Controle!RC1)"
Formule7 = "=Countif(" & Page & "!R3C[-7]:R42C[-7],Controle!RC1)"
Formule8 = "=Countif(" & Page & "!R3C[-8]:R42C[-8],Controle!RC1)"
Formule9 = "=Countif(" & Page & "!R3C[-9]:R42C[-9],Controle!RC1)"
Formule10 = "=Countif(" & Page & "!R3C[-10]:R42C[-10],Controle!RC1)"
Formule11 = "=Countif(" & Page & "!R3C[-11]:R42C[-11],Controle!RC1)"
Formule12 = "=Countif(" & Page & "!R3C[-12]:R42C[-12],Controle!RC1)"
Formule13 = "=Countif(" & Page & "!R3C[-13]:R42C[-13],Controle!RC1)"
Formule14 = "=Countif(" & Page & "!R3C[-14]:R42C[-14],Controle!RC1)"
Formule15 = "=Countif(" & Page & "!R3C[-15]:R42C[-15],Controle!RC1)"
Formule16 = "=Countif(" & Page & "!R3C[-16]:R42C[-16],Controle!RC1)"
Formule17 = "=Countif(" & Page & "!R3C[-17]:R42C[-17],Controle!RC1)"
Formule18 = "=Countif(" & Page & "!R3C[-18]:R42C[-18],Controle!RC1)"
Formule19 = "=Countif(" & Page & "!R3C[-19]:R42C[-19],Controle!RC1)"
Formule20 = "=Countif(" & Page & "!R3C[-20]:R42C[-20],Controle!RC1)"
Formule21 = "=Countif(" & Page & "!R3C[-21]:R42C[-21],Controle!RC1)"
Formule22 = "=Countif(" & Page & "!R3C[-22]:R42C[-22],Controle!RC1)"
Formule23 = "=Countif(" & Page & "!R3C[-23]:R42C[-23],Controle!RC1)"
Formule24 = "=Countif(" & Page & "!R3C[-24]:R42C[-24],Controle!RC1)"
Formule25 = "=Countif(" & Page & "!R3C[-25]:R42C[-25],Controle!RC1)"
Formule26 = "=Countif(" & Page & "!R3C[-26]:R42C[-26],Controle!RC1)"
Formule27 = "=Countif(" & Page & "!R3C[-27]:R42C[-27],Controle!RC1)"
Formule28 = "=Countif(" & Page & "!R3C[-28]:R42C[-28],Controle!RC1)"
Formule29 = "=Countif(" & Page & "!R3C[-29]:R42C[-29],Controle!RC1)"
Formule30 = "=Countif(" & Page & "!R3C[-30]:R42C[-30],Controle!RC1)"

Worksheets("Controle").Range("C2").Formula = Maand
Worksheets("Controle").Range("B4:B22").Formula = Formule
Worksheets("Controle").Range("D4:D22").Formula = Formule1
Worksheets("Controle").Range("F4:F22").Formula = Formule2
Worksheets("Controle").Range("H4:H22").Formula = Formule3
Worksheets("Controle").Range("J4:J22").Formula = Formule4
Worksheets("Controle").Range("L4:L22").Formula = Formule5
Worksheets("Controle").Range("N4:N22").Formula = Formule6
Worksheets("Controle").Range("P4:p22").Formula = Formule7
Worksheets("Controle").Range("R4:R22").Formula = Formule8
Worksheets("Controle").Range("T4:T22").Formula = Formule9
Worksheets("Controle").Range("V4:V22").Formula = Formule10
Worksheets("Controle").Range("X4:X22").Formula = Formule11
Worksheets("Controle").Range("Z4:Z22").Formula = Formule12
Worksheets("Controle").Range("AB4:AB22").Formula = Formule13
Worksheets("Controle").Range("AD4:AD22").Formula = Formule14
Worksheets("Controle").Range("AF4:AF22").Formula = Formule15
Worksheets("Controle").Range("AH4:AH22").Formula = Formule16
Worksheets("Controle").Range("AJ4:AJ22").Formula = Formule17
Worksheets("Controle").Range("AL4:AL22").Formula = Formule18
Worksheets("Controle").Range("AN4:AN22").Formula = Formule19
Worksheets("Controle").Range("AP4:AP22").Formula = Formule20
Worksheets("Controle").Range("AR4:AR22").Formula = Formule21
Worksheets("Controle").Range("AT4:AT22").Formula = Formule22
Worksheets("Controle").Range("AV4:AV22").Formula = Formule23
Worksheets("Controle").Range("AX4:AX22").Formula = Formule24
Worksheets("Controle").Range("AZ4:AZ22").Formula = Formule25
Worksheets("Controle").Range("BB4:BB22").Formula = Formule26
Worksheets("Controle").Range("BD4:BD22").Formula = Formule27
Worksheets("Controle").Range("BF4:BF22").Formula = Formule28
Worksheets("Controle").Range("BH4:BH22").Formula = Formule29
Worksheets("Controle").Range("BJ4:BJ22").Formula = Formule30

End Sub

Merci d'avance
 
C

Christophe

Guest
Bonjour Vériland

Merci, j'espere qu'il s'en remettra, mais mon code fonctionne comme y faut, c'est le pricipale, j'ai mon résultat, mais c'est clair que si il ya moyen d'y voir un peu plus clair, je préfère, si tu as une solution, tu peux toujours proposé, merci

Christophe
 
V

Vériland

Guest
Re bonsoir Christophe,

Je n'en doute pas du tout...à y voir cela doit fonctionner...et je ne me moque pas...mais j'en connait dans le forum qui te font la même version Light...mais t'inquiète pas tu vas avoir des réponses...de mon côté je regarde déjà...

A+ Vériland
 
J

Jean-Marie

Guest
Bonsoir Christophe,

En appliquant cette formule dans la cellule A3 de ton exemple :

=ADRESSE(LIGNE(DECALER(INDIRECT($A2);0;1))+COLONNE(A:A)-1;COLONNE((DECALER(INDIRECT($A2);0;1)));4)

Je résous ton problème en glisser/déposer. A toi de coucher son principe dans ta macro pour la simplifier.

@+ Jean-Marie
 
J

Jean-Marie

Guest
Alors

J'ai simplifier ma formule, je te l'explique :

la fonction adresse () te renvoi sous forme de texte une adresse de cellule, en fonction des arguments passé :
- le 1er est le numéro de la ligne (numérique)
- le 2ème est le numéro de la colonne (numérique)
- le 3ème est l'option du renvoi sur forme de cellule absolue ou relative

Pour calculer la valeur numérique du 1er argument, j'utilise la formule
9+LIGNE(A1)

Pour calculer la valeur numérique du 2ème argument, j'utilise la formule
COLONNE((DECALER(INDIRECT($A2);0;1)))

=adresse(9+LIGNE(A1);COLONNE((DECALER(INDIRECT($A2);0;1)));4)


Ligne -> N° de la ligne de la cellule mis en référence
Colonne -> N° de la colonne de la cellule mis en référence
Indirect -> Tranforme le contenu de la cellule de référence en référence

@+Jean-Marie
 
V

Vériland

Guest
Bonsoir à tous,


'macro Vériland pour Christophe 01/01/02
'http://www.excel-downloads.com
Option Explicit
Sub InscrireFormule()

Dim A, B, Col, lig As Long
Dim page As String
Col = 2
lig = 3
page = InputBox("Indiquer le mois à controler", "Page Number", "januari")
If page = "" Then Exit Sub
Worksheets("Controle").Range("C2").Formula = "=" & page & "!B1"
For A = 1 To 5
For B = 1 To 10
Worksheets("Controle").Cells(lig, Col).Formula = "=Countif(" & page & "!R3C:R42C,Controle!RC1)"
lig = lig + 1
Next B
lig = 3
Col = Col + 2
Next A
End Sub


Voilà christophe j'ai fait une cure d'amaigrissement de ta formule...tout ce qui est inscrit là remplace ta formule de départ...avec la résolution du problème annuler en prime...

Voilà...copier / coller...lol

Bonne ANNEE ceux que j'ai pas vu

A+ Vériland
 
C

Christophe

Guest
Bonsoir tous le monde

Ben Vériland, super mais il ya tous de meme un petit probleme, quelque part, je suis en train, d'essayer d'analyser, je te tient au courant, en tous cas merci, il doit surement s'agir d'une connerie, mais elle est vraiment beaucoup plus light,

see you

thanks
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley