compteur

eliot raymond

XLDnaute Occasionnel
Bonjour a tous et toutes, forum bonjour,

j'ai chercher mais pas trouver ce qui aurai pu faire mon bonheur a savoir.

Voila, je cherche a faire un compteur – décompteur de position de ligne.
Dans la colonne que F a partir de F2 a F27 en descendant et F27 a F2 en remontant

et afficher en permanence le chiffre correspondant a la (position de la ligne), dans la cellule F28

Si un petit code VBA permettant ceci, je pourrai ensuite progresser dans mon programme SVP

Pas de fichier c'est pour tester

Merci beaucoup ca m'aiderai bien, bonne journée. XL2007

Raymond
 

jp14

XLDnaute Barbatruc
Re : compteur

Bonjour

Ci dessous une procédure évènementielle à tester
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'afficher en permanence le chiffre correspondant a la (position de la ligne), dans la cellule F28
If Target.Count > 1 Then Exit Sub
If Target.Column <> 6 Then Exit Sub
If Target.Address = "$F$28" Then Exit Sub
Sheets(ActiveSheet.Name).Range("F28") = Target.Row

End Sub

A tester

JP
 

eliot raymond

XLDnaute Occasionnel
Re : compteur

bonjour Jp14, forum

c'est bon ca marche merci bien, encore un petit truc si possible n'etant encore un virtuose du VBA
comment attribuer une variable qui pourrait tester que ca ne remonte pas plus haut que 2 ni descendre en dessous de 28 svp

merci et bon app
raymond
 

jp14

XLDnaute Barbatruc
Re : compteur

Bonjour

Ci dessous la macro modifiée

Code:
' a rajouter dans un module
Public ligne As Integer
' dans la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'afficher en permanence le chiffre correspondant a la (position de la ligne), dans la cellule F28
If Target.Count > 1 Then Exit Sub
If Target.Column <> 6 Then Exit Sub
If Target.Address = "$F$28" Then Exit Sub
Sheets(ActiveSheet.Name).Range("F28") = Target.Row
' si la ligne est supérieure à 28 on cative la ligne 27
If Target.Row > 28 Then Sheets(ActiveSheet.Name).Range("f27").Activate
' si ligne = 0 on mémorise la ligne
If ligne = 0 Then
    ligne = Target.Row
Else
' si la différence est supérieure à 2
    If Abs(ligne - Target.Row) > 2 Then
   ' on active la ligne précédente
        Sheets(ActiveSheet.Name).Range("f" & ligne).Activate
    Else
   ' on mémorise la ligne en cours
        ligne = Target.Row
    End If
End If
End Sub

a tester

JP
 

eliot raymond

XLDnaute Occasionnel
Re : compteur

Re jp14 forum

Bien dejeuner j'espere, bon tant mieux, merci pour la rallonge du code, c'est sympa, suivi tes conseils et

sauf erreur de ma part il faudrait que le curseur s'arrete a la ligne 2 et la ce n'ai pas le cas, j'ai regarder un peu mais je sens que je vais y passer l'apres midi, que reste t'il a faire pour finaliser ca, STP car ligne 1 est reserver a de futur ENTETES, TITRES, bref par contre vers le bas quand on arrive a la cellule F28 c'est pas franc ca sautille

encore petit coup de main,stp, en tout cas merci pour le code ainsi que tes commentaires, trop sympa c'est vraiment bienvenue quand tu debutes.

merci et bonne apres midi

Raymond
 

eliot raymond

XLDnaute Occasionnel
Re : compteur

Re jp14, forum,

Je me permets de te re soliciter, je ne sais, si tu lu mon message de 13h45 depuis j'ai essayer de modifier le code que as fait et je n'arrive pas a empecher le curseur d'aller sur la ligne 1 qui est reserver aux titres,,, VERS le bas c'est bon ca marche, quand tu aura le temps si tu veux bien m'indiquer comment faire, ca serait sympa de nouveau.

merci et a plus tard

Raymond
 

jp14

XLDnaute Barbatruc
Re : compteur

Bonjour (re)

Ci dessous la macro modifiée

Code:
Option Explicit

' a rajouter dans un module
Public ligne As Integer
' dans la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'afficher en permanence le chiffre correspondant a la (position de la ligne), dans la cellule F28
Application.ScreenUpdating = False 'gele l'ecran
If Target.Count > 1 Then Exit Sub
If Target.Column <> 6 Then Exit Sub
If Target.Address = "$F$28" Then Exit Sub
Sheets(ActiveSheet.Name).Range("F28") = Target.Row
' si la ligne est supérieure à 28 on cative la ligne 27
If Target.Row > 28 Then Sheets(ActiveSheet.Name).Range("f27").Activate
If Target.Row < 3 Then Sheets(ActiveSheet.Name).Range("f3").Activate
Application.ScreenUpdating = True
End Sub

J'avais pris ce texte "remonte pas plus haut que 2" en valeur relative et non en valeur absolue.

A tester

JP
 

eliot raymond

XLDnaute Occasionnel
Re : compteur

Bonsoir Jp14, forum bonsoir,

Merci beaucoup mission accompli, ca marche et je vais pouvoir faire ce dont j'avais
prévu.
A une prochaine fois surement j'ai encore besoin d'apprendre sur VBA.

bonne soirée a toi JP et encore merci

Raymond
 

Discussions similaires

Réponses
9
Affichages
178
Réponses
36
Affichages
2 K

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 179
dernier inscrit
BERSEB50