Créer un compteur dynamique de l'enregistement en cours

Helios67

XLDnaute Nouveau
Bonjour,
Pour des raisons professionnelles, je souhaite créer un fichier Excel (2007 - 2010) qui permette de mieux gérer mon boulot. Pour diverses raisons, je suis obligé de me satisfaire d'Excel plutôt que de tabler sur Access, qui serait plus approprié à mon sens.

1. Je sais que le logiciel n'est pas des plus adapté à la gestion dont j'ai besoin ;
2. Je ne sais même pas s'il est possible de créer ce que j'ai en tête avec Excel ;
3. La disparité du matériel de l'entreprise est tel que je suis obligé de trouver des solutions pour travailler avec Excel 2003 - 2007 et 2010 (bientôt le 2003 est sensé disparaître). je n'aborderai même pas le sujet matériel...

Bref, pour faire cour :

J'ai Un fichier Excel (xlsm), avec 17 onglets (feuilles de calcul), qui me servira de lieu de stockage ou de bases de données. Chaque onglet correspond à un site particulier. A Savoir que le nombre d'enregistrements par site ne dépasse pas cent et reste toujours fixe. Donc, niveau quantité de données pas énorme.

J'ai créé en parallèle un second fichier Excel (xlsm), qui contient lui des USERFORM (Formulaire). Ce second fichier sera l'outil de travail avec lequel nous effectueront les traitements quotidien. Un peu, dans le même esprit que les Bases de données Access... Je souhaite séparer les données de la partie graphique pour des raisons de sécurité.
A moins d'y être forcé, je ne souhaite pas que ce second fichier contienne la moindre donnée...
Est-ce réaliste, souhaitable ????

Bref, pour l'heure, j'ai créer quelque code vba qui fonctionnent bien (175 pages de codes ! Il est toujours miraculeux de voir ce que l'on n'arrive à faire avec l'aide d'internet... :D ).

Sur mon UserForm j'ai, entre autre, des Textbox liées à quatre boutons de navigation qui affiche les différentes lignes (enregistrements):

Premier Précédent Suivant Dernier

L'affichage des données fonctionne sans problème. Je peux naviguer sans souci sur chaque onglet.

Mon souhait :

Créer un champ label avec une procédure me permettant d'afficher où je suis dans les enregistrements qui s'affichent. Du type :

25 enregistrements sur 87
(25 étant la position de l'enregistrement afficher à l'écran et 87 le nombre total de lignes, d'enregistrements)

J'ai bien réussi à trouver une fonction qui me permet d'afficher le numéro du dernier enregistrement. J'en ai également une qui m'affiche le point de départ (la ligne 2), mais comment puis-je faire pour que ce premier chiffre bouge quand j'avance ou recule dans mes enregistrements ????


Pour l'heure j'ai ceci :

With Sheets("Onglet1").Select 'sélectionne le premier onglet
Range("B2").Select 'se place sur la cellule B2 - Nom
iLigne_1 = ActiveCell.Row -1 'Mon pseudo compteur se place sur la ligne, donc à 2 = mon premier enregistrement
DER_Ligne_1 = Cells.SpecialCells(xlCellTypeLastCell).Row 'Cette variable incrémente le nombre totale de ligne et ne devra changer que si je supprime ou rajoute un enregistrement
Lab_Compt_1 = iLigne_1 & " résidants sur " & DER_Ligne_1 'Affiche sur le UserForm, dans mon label, le résultat
End With

Il ne faut certes pas être sortie d'infosup pour remarquer que j'ai nulle part d'incrémentation de mes compteurs. Pour la simple raison que pour l'heure je n'ai pas trouvé de solution viable... Sa plante à chaque fois. :mad: Pire que tout, j'avais cru qu'avec ActiveCells.row, le changement se faisait automatiquement... Ben non, ça bloque tout....:mad:

Comment dois-je faire pour incrémenter Mon compteur iLigne pour qu'il affiche en temps réel ou je me trouve.
Comment dois-je faire pour que DER_Ligne change si je supprime ou rajoute une ligne
ET SURTOUT, à quel niveau de mon programme dois-je rajouter cette procédure ?!

Bref, pas simple à expliquer, pas simple à trouver. Sur le net, je trouve bien des compteurs de lignes... Mais pas ce que moi je veux faire.
S'il y a des gens ici qui ont la capacité de m'expliquer et de m'aider, je les remercie par avance.

Je pense que la procédure devrait être du style :

DIM iLigne as Single, somme as Single, comptLigne as Single

For iLigne = 1 to Plage.rows.count

If Plage.cells(iLigne).value > 0 Then
Somme = somme + plage.cells(iligne).value
ComptLigne = ComptLigne + 1
End If

Next

Mais ça marche pas ! :confused: voilà, voilà....

Merci d'avance aux pros du pot ! ;)
 

Pierrot93

XLDnaute Barbatruc
Re : Créer un compteur dynamique de l'enregistement en cours

Bonjour,

mets peut être en pièce jointe un tout petit fichier, ne représentant que le problème posé, sera plus facile pour t'aider.... car là en l'état vois pas trop où tu veux en venir...

bon après midi
@+
 

Helios67

XLDnaute Nouveau
Re : Créer un compteur dynamique de l'enregistement en cours

Bonjour,
Je me doutais que le problème se poserait.... Bon, faut donc que je créé un fichier exemple..... Dès que c'est fait je le poste, mais pas simple...

Merci pour la réponse dans tous les cas
Helios
 

Helios67

XLDnaute Nouveau
Re : Créer un compteur dynamique de l'enregistement en cours

Ci-joint une partie très épuré du programme. Avec la partie boucle et affichage, tout à la fin.

A noter que j'ai viré les élucubration et début de boucle que j'avais commencé et qui de tout façon ne donne rien.
En vous remerciant par avance,

Helios
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Créer un compteur dynamique de l'enregistement en cours

Bonjour à tous

Helios67
Ne sommes-nous sur un forum de partage?
Tu demandes de l'aide et au prétexte que tu trouves tout seul la solution à ton problème , tu retires ton fichier exemple!
(qui va savoir aurait peut-être intéressé un membre du forum avec une problématique proche de la la tienne)
Attention l'égomanie te guette, camarade.

Sinon tu aurais tout intérêt à plutot dimer ainsi, non ?
Dim iLigne&, somme&, comptLigne&

Je te laisse trouver sur Internet le pourquoi de la chose. ;)
 

Helios67

XLDnaute Nouveau
Re : Créer un compteur dynamique de l'enregistement en cours

Salut,
Houuuuu, qu'ils sont mauvaises langues ! ;) Te rends-tu comptes que tu vois le mal partout ?! Franchement ..... :(

J'ai retiré le premier code, pour y rajouter ma trouvaille ... Qui ne fonctionne pas (encore) correctement !

Me voilà à plancher depuis ce matin et Mônsieur m'interpelle comme égo-maniaque trotskiste ! C'est du propre ! Je sors ma faucille.....

Côté Dimer.... A ma grande honte... Puis-je te demander de me parler français, hein ?! :D
Dimer.... What that ?! Parce qu'on peux écrire les variables cote-à-cote ???? Mais où dis-tu le style de variable que c'est ? Et c'est quoi ce & ?
Je lance une recherche sur le net..... Bon, on teste..... Mais avant, une boite d'aspirine !

Côté programme, je bloque sur les noms des variables... Le genre... surtout la lisibilité des codes que je mets en place. Je suis persuadé que le programme plantera en raison d'un manque d'optimisation du code et d'une mémoire insuffisante, mais bon... Soyons fou....

Dès que ça tourne je poste le fichier deux ....

Cdlt
:p
 

Discussions similaires

Statistiques des forums

Discussions
312 106
Messages
2 085 352
Membres
102 871
dernier inscrit
Maïmanko