OVH Cloud OVH Cloud

étirer selon le nombre de lignes

5 réponses
Avatar
af
Bonjour,

Une petite question pour démarrer cette matinée :

Je souhaite étirer des formules sur une certaine plage par une macro.

A B C D
1 40 a = formule à étirer vers le bas
2 45 b
3 46 a
4 47 b


Il faut avant tout que je compte le nombre de lignes.
Le résultat étant lier par ODBC, je souhaite effectuer une boucle pour
réactualiser les données toutes les 5 minutes par exemple.

Quel serait le code pour tout ça ?

Faut-il un bouton pour mettre fin à la boucle, ou est-ce qu'on le met dans
le code ?

Merci d'avance,

Alex

5 réponses

Avatar
michdenis
Bonjour Af,

Inspiré d'une procédure de M. Pearson ...

'à mettre dans le haut d'un module standard
Public Moment As Double
Public Const TonInterval = 300 'en secondes
Public Const LaMacro = "MettreAJourQueryTable"

à déterminer le nom de ta feuille et de l'index du querytable de ton application
et la formule à recopier
'-------------------------------------
Sub MettreAJourQueryTable()

Dim Qt As QueryTable

With Worksheets("Feuil1")
Set Qt = .QueryTables(1)
Qt.Refresh True
DerLig = .Range("D65536:D" & _
Range("A65536").Row).Formula = "=Taformule"
End With
End Sub
'-------------------------------------

Sub Depart()
Moment = Now + TimeSerial(0, 0, TonInterval)
Application.OnTime earliesttime:=Moment, procedure:=LaMacro, _
schedule:=True
End Sub
'-------------------------------------

Sub ArreterMiseAjour()
On Error Resume Next
Application.OnTime earliesttime:=Moment, _
procedure:=LaMacro, schedule:úlse
End Sub
'-------------------------------------


Salutations!






"af" a écrit dans le message de news: 43291baf$0$5402$
Bonjour,

Une petite question pour démarrer cette matinée :

Je souhaite étirer des formules sur une certaine plage par une macro.

A B C D
1 40 a = formule à étirer vers le bas
2 45 b
3 46 a
4 47 b


Il faut avant tout que je compte le nombre de lignes.
Le résultat étant lier par ODBC, je souhaite effectuer une boucle pour
réactualiser les données toutes les 5 minutes par exemple.

Quel serait le code pour tout ça ?

Faut-il un bouton pour mettre fin à la boucle, ou est-ce qu'on le met dans
le code ?

Merci d'avance,

Alex
Avatar
af
Bonjour,
je teste par étape.
Pour compter les lignes
DerLig = .Range("D65536:D" & _ Range("A65536").Row).Formula = "=Taformule"

me dit "erreur de compilation sur le .Range"
Pourquoi ?







"michdenis" a écrit dans le message de news:

Bonjour Af,

Inspiré d'une procédure de M. Pearson ...

'à mettre dans le haut d'un module standard
Public Moment As Double
Public Const TonInterval = 300 'en secondes
Public Const LaMacro = "MettreAJourQueryTable"

à déterminer le nom de ta feuille et de l'index du querytable de ton
application
et la formule à recopier
'-------------------------------------
Sub MettreAJourQueryTable()

Dim Qt As QueryTable

With Worksheets("Feuil1")
Set Qt = .QueryTables(1)
Qt.Refresh True
DerLig = .Range("D65536:D" & _
Range("A65536").Row).Formula = "=Taformule"
End With
End Sub
'-------------------------------------

Sub Depart()
Moment = Now + TimeSerial(0, 0, TonInterval)
Application.OnTime earliesttime:=Moment, procedure:=LaMacro, _
schedule:=True
End Sub
'-------------------------------------

Sub ArreterMiseAjour()
On Error Resume Next
Application.OnTime earliesttime:=Moment, _
procedure:=LaMacro, schedule:úlse
End Sub
'-------------------------------------


Salutations!






"af" a écrit dans le message de news:
43291baf$0$5402$
Bonjour,

Une petite question pour démarrer cette matinée :

Je souhaite étirer des formules sur une certaine plage par une macro.

A B C D
1 40 a = formule à étirer vers le bas
2 45 b
3 46 a
4 47 b


Il faut avant tout que je compte le nombre de lignes.
Le résultat étant lier par ODBC, je souhaite effectuer une boucle pour
réactualiser les données toutes les 5 minutes par exemple.

Quel serait le code pour tout ça ?

Faut-il un bouton pour mettre fin à la boucle, ou est-ce qu'on le met dans
le code ?

Merci d'avance,

Alex





Avatar
patrick.lyon
af a utilisé son clavier pour écrire :
bonjour
je suis en train de faire exactement la meme chose que toi

j'ai commencé par nommer ma zone de travail
ppsources ÞCALER(sources!$A$1;;;NBVAL(sources!$A:$A);NBVAL(sources!$1:$1))
ensuite dans ma macro
Application.Goto Reference:="ppsources" -->selection de la zone de travail
ppcol = Selection.Columns.Count --> nb de colonnes
pplign = Selection.Rows.Count --> nb de lignes
For i = 2 To pplign --> boucle de la ligne 2 a la fin de la zone
pptemp = "=AO" & i & "-AN" & i --> construction de la formule a copier
Cells(i, ppcol + 1).Formula = pptemp --> je colle la formule dans toutes leslignes d'une nouvelle colonne dans ton cas tu
enleves le +1
Next i

voila ou j'en suis
est-ce que ça t'aide ??


Bonjour,

Une petite question pour démarrer cette matinée :

Je souhaite étirer des formules sur une certaine plage par une macro.

A B C D
1 40 a = formule à étirer vers le bas
2 45 b
3 46 a
4 47 b


Il faut avant tout que je compte le nombre de lignes.
Le résultat étant lier par ODBC, je souhaite effectuer une boucle pour réactualiser les données toutes les 5 minutes par exemple.

Quel serait le code pour tout ça ?

Faut-il un bouton pour mettre fin à la boucle, ou est-ce qu'on le met dans le code ?

Merci d'avance,

Alex


Avatar
michdenis
Bonjour Af,

si tu extraits des bouts de code, assure toi que tu utilises les références aux objets correctements.

Dans une structure with worksheets("Feuil1"), tu dois inscrire un "point" devant l'objet range pour spécifier qu'il appartient bien
à ladite feuille, ce n'est pas le cas autrement.

P.S. L'ensemble de la procédure n'a pas été testée ...


Salutations!


"af" a écrit dans le message de news: 4329787a$0$1004$
Bonjour,
je teste par étape.
Pour compter les lignes
DerLig = .Range("D65536:D" & _ Range("A65536").Row).Formula = "=Taformule"

me dit "erreur de compilation sur le .Range"
Pourquoi ?







"michdenis" a écrit dans le message de news:

Bonjour Af,

Inspiré d'une procédure de M. Pearson ...

'à mettre dans le haut d'un module standard
Public Moment As Double
Public Const TonInterval = 300 'en secondes
Public Const LaMacro = "MettreAJourQueryTable"

à déterminer le nom de ta feuille et de l'index du querytable de ton
application
et la formule à recopier
'-------------------------------------
Sub MettreAJourQueryTable()

Dim Qt As QueryTable

With Worksheets("Feuil1")
Set Qt = .QueryTables(1)
Qt.Refresh True
DerLig = .Range("D65536:D" & _
Range("A65536").Row).Formula = "=Taformule"
End With
End Sub
'-------------------------------------

Sub Depart()
Moment = Now + TimeSerial(0, 0, TonInterval)
Application.OnTime earliesttime:=Moment, procedure:=LaMacro, _
schedule:=True
End Sub
'-------------------------------------

Sub ArreterMiseAjour()
On Error Resume Next
Application.OnTime earliesttime:=Moment, _
procedure:=LaMacro, schedule:úlse
End Sub
'-------------------------------------


Salutations!






"af" a écrit dans le message de news:
43291baf$0$5402$
Bonjour,

Une petite question pour démarrer cette matinée :

Je souhaite étirer des formules sur une certaine plage par une macro.

A B C D
1 40 a = formule à étirer vers le bas
2 45 b
3 46 a
4 47 b


Il faut avant tout que je compte le nombre de lignes.
Le résultat étant lier par ODBC, je souhaite effectuer une boucle pour
réactualiser les données toutes les 5 minutes par exemple.

Quel serait le code pour tout ça ?

Faut-il un bouton pour mettre fin à la boucle, ou est-ce qu'on le met dans
le code ?

Merci d'avance,

Alex





Avatar
af
je patine mais je teste

A+



"patrick.lyon" a écrit dans le message de news:

af a utilisé son clavier pour écrire :
bonjour
je suis en train de faire exactement la meme chose que toi

j'ai commencé par nommer ma zone de travail
ppsources
ÞCALER(sources!$A$1;;;NBVAL(sources!$A:$A);NBVAL(sources!$1:$1))
ensuite dans ma macro
Application.Goto Reference:="ppsources" -->selection de la zone de
travail
ppcol = Selection.Columns.Count --> nb de colonnes
pplign = Selection.Rows.Count --> nb de lignes
For i = 2 To pplign --> boucle de la ligne 2 a la fin de la zone
pptemp = "=AO" & i & "-AN" & i --> construction de la formule a copier
Cells(i, ppcol + 1).Formula = pptemp --> je colle la formule dans toutes
leslignes d'une nouvelle colonne dans ton cas tu enleves le +1
Next i

voila ou j'en suis
est-ce que ça t'aide ??


Bonjour,

Une petite question pour démarrer cette matinée :

Je souhaite étirer des formules sur une certaine plage par une macro.

A B C D
1 40 a = formule à étirer vers le bas
2 45 b
3 46 a
4 47 b


Il faut avant tout que je compte le nombre de lignes.
Le résultat étant lier par ODBC, je souhaite effectuer une boucle pour
réactualiser les données toutes les 5 minutes par exemple.

Quel serait le code pour tout ça ?

Faut-il un bouton pour mettre fin à la boucle, ou est-ce qu'on le met
dans le code ?

Merci d'avance,

Alex