modifier formule dans macro
#1
Régulier XLPages

Inscription: 31/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
excel 2003
Posté le : 28-05-2012 19h06

bonjour le forum
j'ai une macro et je voudrais inserer une formule dont les valeurs change a chaque clic de la macro.
la formule est "NB.SI($B$2:$F$41;A6)"au départ,puis a chaque clic les valeurs "2 et 41" augmente de +1 ce qui donnerais "NB.SI($B$3:$F$42;a6)",mais comment l'incrire dans la macro.elle devrais s'inscrire entre le"End With" et le "Range("A6:B54").Copy"
 
Sub Macro4()
' Macro4 - 40-Auto
Dim plg As Byte
Dim dlg As Integer, vligne As Integer
dlg = Range("L" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = True
For plg = 34 To dlg
    With Range("H" & plg & ":L" & plg)
        .Copy Range("C1")
        .ClearContents
    End With




    Range("A6:B54").Copy
    Range("C6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    With ActiveWorkbook.Worksheets("40").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("D6:D54"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("C6:D54")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Calculate
    'Range("G5").Select
    vligne = Range("AD65536").End(xlUp).Row + 1
    Range("C3:G3").Copy
    Range("AD" & vligne).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Dim Cellule As Range
Dim Plage As Range

Dim i, l, c As Integer
i = 6
Set Plage = Range("C1:G1")
While IsEmpty(Range("A" & i)) = False
     For Each Cellule In Plage
      If Range(Cellule.Address).Value = Range("C" & i).Value Then
      l = Range("E" & i).Value + 8
      c = Range("F" & i).Value + 10
      Cells(c, l) = Cells(c, l) + 1
      End If
     Next Cellule
      i = i + 1
Wend
Next
Application.ScreenUpdating = False
Range("G5").Select
End Sub




merci


Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#2
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 07-06-2012 12h15
Bonjour à tous
Bonjour jad73

Si j'ai compris, je te propose ceci :

Option Explicit

Dim a As Integer
Dim b As Integer
Dim c As Integer

Sub modifie_fonction()

Range("D1") = Application.WorksheetFunction.CountIf(Range("b" & (2 + a) & ":f" & (41 + b)), Range("a" & (6 + c)))

a = a + 1
b = b + 1
c = c + 1

End Sub

Il te reste à l'adapter.
Au lieu d'une formule dans D1, tu as le résultat.

Eric
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#3
Régulier XLPages

Inscription: 31/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
excel 2003
Posté le : 08-06-2012 10h23
bonjour Eric,le forum


je ne comprend pas ton code,doit-il remplacer mon autre code.
De plus la formule a modifier ce trouve en "B6" c'est cette formule "NB.SI(B2:F51;A6) qui doit changer chaque fois-"B2:F51"->"B3:F52" ainsi de suite.
merci
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#4
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 08-06-2012 11h25
 
Bonjour à tous
Bonjour jad73
Ce que j'ai proposé était à adapter. Ne connaissant pas la cellule destinataire, j'avais pris "D1" comme exemple (la boule de cristal n'a pas marché).
Tu avais mis : NB.SI($B$2:$F$41;A6), donc j'ai repris cela (il faut que je change de boule de cristal).
Quoiqu'il en soit voici l'adaptation :
En tête du module, et non dans la "macro4" :
Dim a As Integer
Dim b As Integer

et entre "End with" et "Range("A6:B54").copy
Range("B6") = Application.WorksheetFunction.CountIf(Range("B" & (2 + a) & ":F" & (51 + b)), Range("A6"))
a = a + 1
b = b + 1
Eric


Edité par Eric le 08/06/2012 19:19:08
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#5
Régulier XLPages

Inscription: 31/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
excel 2003
Posté le : 09-06-2012 09h21
bonjour Eric,le forum
merci pour ta réponse mais les valeurs de la formule en B6 ne change pas a chaque clic de la macro.
merci
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#6
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 09-06-2012 12h19
Bonjour à tous
Bonjour fad73
Désolé mais ce que je t'ai donné est l'équivalent de ta formule, j'ai testé et cela fonctionne.
Que recherches tu comme résultat ? La formule "NB.SI($B$2:$F$51;A6)" te renvoie le nombre de cellules de valeur identique à la cellule "A6" dans la plage "B2:F51", le n° de ligne étant incrémenté à chaque clic. Tant que x de Bx ne sera pas supérieur à la ligne de la première valeur recherchée, le résultat ne changera pas, sauf si une cellule de même valeur se trouve dans la plage avec le nouveau y de Fy.
Quelques interrogations :
Est-ce normal de rechercher toujours la même valeur, celle de "A6" ?
Tu renvoies le résultat dans la cellule "B6" de la plage "$B$2:$F$51", est-ce exact ?
Un petit fichier pourrait nous aider.
Eric 




Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#7
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 10-06-2012 10h27
Bonjour à tous
Bonjour fad73
Il y a eu plus de 180 personnes qui ont lu ta demande et qui sont peut être dans le même cas que toi, ce serait donc sympa que tu dises comment tu as résolu ton problème.
Merci d'avance pour eux mais aussi pour moi, j'apprendrai certainement quelque chose.
A te lire très vite
Eric 
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#8
Régulier XLPages

Inscription: 31/12/2008

Messages: 55

Système d'exploitation:
PC
Version Excel utilisée:
excel 2003
Posté le : 10-06-2012 12h02
Bonjour Eric,le forum
pour répondre a ton post de hier,je cherche simplement a faire changer les valeures de la formule "NB.SI(Feuil1!$B$2:$F$51;A6)" en "NB.SI(Feuil1!$B$3:$F$52;A6) a chaque clic de la macro et ainsi de suite-$B$4:$F$53-clic macro-$B$5:$F$54 etc....
j'ai fait comme tes indications du post #4 et ça ne change pas,mais ça vient trés certainement de moi ne comprenant pas grand chose au vba(pour dire rien) alors j'ai marqué résolu pour arreter la discussion.
merci a vous et de votre patience
bonne journée
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#9
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 10-06-2012 13h38
Bonjour jad73, bonjour Eric

Si tu nous dis avoir du mal avec VBA (sourire... je suis comme toi) , peut-être une simple toupie qui incrémente de 1 en 1 à chaque clic peut-elle suffire ?

Dans le fichier joint, au lieu de NB.SI($B$2:$F$51;A6) j'ai utilisé cette formule:

=NB.SI(INDIRECT("Feuil1!$B"&I1&":$F$"&I1+50);A6)

Elle utilise la fonction INDIRECT() et permet de faire référence à une cellule I1, il suffit de modifier le contenu le la cellule I1 pour que la plage évolue.

Pour faire varier la valeur de la cellule I1 de 1 en 1 à chaque clic, j'ai inséré une toupie.

Avec Excel 2007, Menu Développeur, cliquer sur Insérer puis sur la toupie:



(Je ne me souviens plus pour Excel 2003, mais il me semble que dans la fenêtre VBA, il faut cliquer sur le menu Affichage, puis sur la petite icone Boite à outils :  )

Ensuite il suffit d'indiquer les paramètres de contrôle de cette toupie, par clic droit sur la toupie choisir Format de contrôle:



Là tu accèdes à la fenêtre de contrôle :




Dans l'onglet contrôle tu règles les paramètres suivants:
Valeur Minimale: 1 (pour commencer ligne 1 dans la formule, 2 pour commencer ligne 2, etc ...)

Valeur maximale: La dernière ligne de ta plage de calcul (tu peux laisser une marge au cas où tu ajouterais des enregistrements)

Changement du pas: 1 pour évoluer de 1 en 1

Cellule liée: $I$1 est un exemple, tu peux placer cette cellule ailleurs dans ta feuille, la valeur de cette cellule changera dès que tu cliqueras sur la toupie

Je ne sais si cette suggestion pourra te rendre service, mais tu devrais suivre les conseils d'Eric, un petit extrait de fichier de quelques lignes illustrant ta question serait bien utile!

Bon dimanche à tous,

mth
Pièce jointe:
xls jad73.xls   [ Taille: 37.00 Ko - Téléchargements: 478 ]
Hors Ligne
Rapport   Haut 

Re: modifier formule dans macro
#10
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 10-06-2012 19h55
 Bonsoir à tous, Mth, jad73
On n'a pas envie que tu restes en rade ......
Merci Mth pour cette proposition, je ne connaissais pas, mais il est vrai que je ne suis pas un ténor de la formule comme toi.
Jad73, je te propose un petit fichier avec mes 3 lignes de codes agrémentées de commentaires, et quelques lignes supplémentaires de debug. C'est juste un exemple. 
Dis-nous
Eric


Pièce jointe:
xls jad73.xls   [ Taille: 23.00 Ko - Téléchargements: 518 ]
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes