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... 😀 ).
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. 😡 Pire que tout, j'avais cru qu'avec ActiveCells.row, le changement se faisait automatiquement... Ben non, ça bloque tout....😡
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 ! 😕 voilà, voilà....
Merci d'avance aux pros du pot ! 😉
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... 😀 ).
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. 😡 Pire que tout, j'avais cru qu'avec ActiveCells.row, le changement se faisait automatiquement... Ben non, ça bloque tout....😡
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 ! 😕 voilà, voilà....
Merci d'avance aux pros du pot ! 😉