optimisation boucle

  • Initiateur de la discussion Dave de grenoble sur chaune
  • Date de début
D

Dave de grenoble sur chaune

Guest
bonjour à tous
j'ai une boucle qui marche nikel

Dim nbligne
nbligne = Range('l1')

For d = 2 To nbligne
Dim cinq
Dim six
cinq = Cells(d, 5)
six = Cells(d, 6)
Dim direction
direction = Cells(d, 7)
Select Case direction
Case 15 To 45
Range('H' & d & ':' & 'I' & d).Select
activecells = '=LOGEST(R1C5:R1C6,RC[-3]:RC[-2])'
End Select
Next d


ca marche mais ca copie a chaque fois la formule '=LOGEST(R1C5:R1C6,RC[-3]:RC[-2])' dans toutes les cases
comment reecrire la formule en utilisant mes 2 variables 'cinq' et 'six'
en gros il faut que je remplace 'activecells = '=LOGEST(R1C5:R1C6,RC[-3]:RC[-2])'' par autre chose

je suis à l'ecoute de toutes reponses, je vous remercie d'avance

dave de grenoble sur chaune..
 

ChTi160

XLDnaute Barbatruc
salut Dave de Grenoble sur chaune
essayes cette version non testée

activecells = '=LOGEST(R1C' & cinq & ':R1C ' & six &' ,RC[-3]:RC[-2])'
il est bon parfois de joindre un extrait du fichier car il n'est pas évident de reproduire un fichier

Message édité par: ChTi160, à: 10/05/2005 12:16
 

ChTi160

XLDnaute Barbatruc
re Dan
voilà la macro que j'ai fais pour moi c'est bon mais je n'ai pas de repères pas de visualisation j'évolue dans le vide Lol
dans (Général) de la feuil1
Option Explicite 'oblige à déclarer les Variables c'est mieux
Sub Davechange()
Dim nbligne As Byte 'peut être modifié en fonction du tableau
integer ou long
Dim cinq As Byte 'Idem
Dim six As Byte 'Idem
Dim direction As Byte 'Idem
With Worksheets('Feuil1')
nbligne = .Range('L1').Value
For d = 2 To nbligne
cinq = .Cells(d, 5)
six = .Cells(d, 6)
direction = .Cells(d, 7)
Select Case direction
Case 15 To 45
.Range('H' & d & ':' & 'I' & d).Select
activecells = '=LOGEST(R1C' & cinq & ':R1C ' & six & ',RC[-3]:RC[-2])'
End Select
Next d
End With
End Sub

Message édité par: ChTi160, à: 10/05/2005 12:33
 
D

Dave de grenoble sur chaune

Guest
g changé de pc ca devrait etre bon [file name=David.zip size=11161]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/David.zip[/file]
 

Pièces jointes

  • David.zip
    27.8 KB · Affichages: 20
  • David.zip
    27.8 KB · Affichages: 28
  • David.zip
    27.8 KB · Affichages: 19

ChTi160

XLDnaute Barbatruc
re David
voilà ce que j'ai adapté après un enregistrement de macro
très pratique lorsque l'on connait c'est situé dans la barre Visual Basic
le rond Bleu et la pointe
tu enregistre ce que tu fais et ensuite tu aménages ici j'ai sélectionné la zone ou se trouvent les Formules colonnes(H et I) ensuite j'ai fais copier puis à coté de coller j'ai fait collage spécial les Valeurs et la mise en forme
puis j'ai modifié pour que la dernière ligne soit détectée automatiquement pour définir la zone ou appliquer cette opération et le tour est joué
j'obtiens ceci:
Sub EffaceFormules()
' EffaceFormules Macro
' Macro enregistrée le 10/05/2005 par Jean Marie
Dim derlgn As Integer
derlgn = Range('I65536').End(xlUp).Row
Range('H2:I' & derlgn).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub

n'hésites pas si problèmes
 

ChTi160

XLDnaute Barbatruc
re David
Arf
voilà ce que celà donne une fois la macro EffaceFormules mise dans le module 1
Sub B15_45_1()

Sheets('feuil1').Select
Dim nbligne
nbligne = Range('l1')
For d = 2 To nbligne
Dim cinq
Dim six
cinq = Cells(d, 5)
six = Cells(d, 6)
Dim direction
direction = Cells(d, 7)
Select Case direction
Case 15 To 45
Range('H' & d & ':' & 'I' & d).Select
Selection.FormulaArray = '=LOGEST(R1C5:R1C6,RC[-3]:RC[-2])'
End Select
Next d
EffaceFormules
End Sub
New Edition
il faut aussi que tu modifies la formule de la cellule L1 enlèves le +1

Message édité par: ChTi160, à: 10/05/2005 14:47
 
D

Dave de grenoble sur chaune

Guest
'n'hésites pas si problèmes' faut pas me le dire 2 fois :)

oui ta methode je l'avais utilisé au debut , je voulais savoir si on pouvais directement faire le calcul dans la macro pour gagner en esthetique, mais ca semble tendu donc je vais opter pour ta solution.
si tu pouvais m'aiD une derniere fois j'ai mis un autre fichier joint, c le meme mais modifié
ma boucle ne marche pas car je tente de tout faire d'un coup, et je c pas si c possible

De plus les colones h et i sont des calculs intermediaires pour faire un calcul dans la colone j, je voudrais savoir si je pouvais faire les calcul intermediare dans la macro pour pouvoir supprimer les 2 colones inutile.
car au final je vais masquer les colones i et j donc voila

enfin ca semble compliké, si tu pouV deja regarD rapidement se qui merde dans ma boucle ici presente tu me sera d'une grande aide
merci pour votre aide a tous

[file name=Test00.zip size=8478]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Test00.zip[/file]
 

Pièces jointes

  • Test00.zip
    8.3 KB · Affichages: 17

ChTi160

XLDnaute Barbatruc
re dave bon pour la premiere question j'ai aménagé la macro ça tourne
voir fichier joint
tu introduisez un calcul lors du calcul de la fonction matricielle donc bug
j'ai aménagé la recherche de la derligne plutôt que la cellule L1

si tu peux m'expliquer la deuxième question merci Lol [file name=testV01.zip size=10969]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/testV01.zip[/file]
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
re Dave
si j'ai bien compris tu n'as pas besoin des colonnes H et I
ces colonnes sont au format matricielle donc les inclure dans une autre fonction je sais pas, mais ce que je sais faire et toi aussi peut être ,c'est supprimer des colonnes par macro
donc on peut imaginer une fois le calcul fait ,la suppression des Colonnes H et I
qu'en penses tu?

Message édité par: ChTi160, à: 10/05/2005 16:10
 

Discussions similaires

Réponses
12
Affichages
569

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg