Mettre les cellules d'une ligne dans un tableau

Bonjour,

J'ai passé en revue les boutons des différentes feuilles. Voici quelques modifications à effectuer.

1. Bouton Ajouter Facture lié au code "saisir nouveau client" --> ajouter ceci juste en dessous de la ligne With Sheets("Formulaire"):

.visible = true 

2. Module "MODIF_LIGNE_ENTREPRISE_NUMERO" dans la Sub ACCUEIL_Bouton4_Cliquer() --> ajouter ceci juste en dessous de la ligne With Sheets("Formulaire"):

.visible = true 

3. Module RECAPITUALTIF dans la sub VOIR_RECAPITULATIF_ANNUEL() au début du ccode --> ajouter

Sheets("RECAPITULATIF").Unprotect

4. Module Deplacement (ou un autre si vous le désirez) --> Ajouter le code ci-dessous pour masquer les feuilles

Sub masquer_feuille()
Dim sh As Worksheet

For Each sh In Worksheets
    With sh
        If .Name <> "ACCUEIL" Then
            .Visible = False
        End If
        .Protect
    End With
Next sh
End Sub

Ce code pourrait aussi être utilisé à la fermeture du fichier (ou l'ouverture) de sorte qu'à l'ouverture seule la feuille Accueil sera visible. Si intérêt je vous donne ce qu'il faut faire

5. Autres points
- Module13 à supprimer
- Module Toutafficher à supprimer ?

6. Dans chaque module, pour obliger l'utilisateur à n'utiliser que les boutons, ajoutez dans chaque en-entête --> "Option Private Module"

Une fois terminé dites moi si ok. il reste quelques détails à vous donner sur les couleurs notamment dans votre feuille Accueil.


Autrement, j'envisage, de réaliser un autre dossier concernant la pêche sur le même principe de fonctionnement

Allez tout de même jeter un oeil sur le fichier réalisé pour Breizhinours dans ce lien --> https://forum.excel-pratique.com/s/goto/1145163 ou le fil.

Bonjour Dan,

Pas facile pour moi en ce moment de me connecter et travailler sur ce dossier.

Avec toutes mes excuses.

Fait tous les points sauf:

Module RECAPITUALTIF dans la sub VOIR_RECAPITULATIF_ANNUEL() au début du ccode --> ajouter

Pas réussi à trouver cette fonction!

Sub masquer_feuille()

Je l'ai ncorporer dans module deplacement.

Mais je ne l'ai raccordé à aucun bouton!

Ce code pourrait aussi être utilisé à la fermeture du fichier (ou l'ouverture) de sorte qu'à l'ouverture seule la feuille Accueil sera visible. Si intérêt je vous donne ce qu'il faut faire

OK

- Module Toutafficher à supprimer ?

OK, je viens de le supprimer.

Dans chaque module, pour obliger l'utilisateur à n'utiliser que les boutons, ajoutez dans chaque en-entête --> "Option Private Module"

Là, je n'ai rien fait.

Je dois donc prendre TOUS les modules et mettre au début de chaque module "Option Private Module".

Faut-il laisser les guillemets?

Bonne réception.

Fait tous les points sauf:
Pas réussi à trouver cette fonction!

Heu... quel est le souci. Il suffit de coller la ligne que je vous ai donnée dans votre code

Je l'ai ncorporer dans module deplacement.
Mais je ne l'ai raccordé à aucun bouton!

Oups oui. Je ne vous en ai pas informé. Il faut remplacer le code ci-dessous dans le module RETOUR

Sub RETOUR_ACCUEIL() 'Retour sur la feuille Accueil
With Sheets("ACCUEIL")
    .Visible = True
    .Activate
    .Range("A1").Select
End With

Call masquer_feuille
End Sub

Je dois donc prendre TOUS les modules et mettre au début de chaque module "Option Private Module".

Oui et sans les guillemets bien entendu.

Re,

Heu... quel est le souci. Il suffit de coller la ligne que je vous ai donnée dans votre code

D'accord, mais je n'ai pas trouvé la fonction : VOIR_RECAPITULATIF_ANNUEL().

Bonne réception.

Re,

Oups oui. Je ne vous en ai pas informé.

Pas de soucis et pas de problème.

J'ai fait modifications et test de votre dernier post (sauf pour la fonction VOIR_RECAPITULATIF_ANNUEL() que je n'ai pas trouvée)

Tout fonctionne à merveille.

La Sub masquer_feuille() est géniale.

En vous remerciant.

Bonne soirée.

Bonjour,

sauf pour la fonction VOIR_RECAPITULATIF_ANNUEL() que je n'ai pas trouvée)

hum...effectivement je l'avais préparée il y a quelques temps mais ne vous l'ai pas donnée. La voici :

Sub VOIR_RECAPITULATIF_ANNUEL()

Sheets("RECAPITULATIF").Unprotect

With Sheets("RECAPITULATIF ANNUEL")
    .Visible = True
    .Activate
    .Unprotect
    .PivotTables(1).PivotCache.Refresh
    .Range("A1").Select
    '.Range("D3").Interior.Color = 16777215 'sert à quoi ???
    .Columns("D:I").EntireColumn.AutoFit
    .Protect
End With

Sheets("ACCUEIL").Visible = False
End Sub

Code à placer dans le module Recapitulatif

La Sub masquer_feuille() est géniale.

Ok. Vous pouvez éventuellement ajouter ceci dans THISWORKBOOK afin de l'exécuter à la fermeture du fichier.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call masquer_feuille
End Sub

Cela vous imposera de toujours enregistrer le fichier évidemment car Excel vous le demandera.

Bonjour Dan,

hum...effectivement je l'avais préparée il y a quelques temps mais ne vous l'ai pas donnée. La voici :

OK, aucun problème.

Ok. Vous pouvez éventuellement ajouter ceci dans THISWORKBOOK

Fait.

Sub VOIR_RECAPITULATIF_ANNUEL()

'.Range("D3").Interior.Color = 16777215 'sert à quoi ???

Vous êtes sur feuille accueil, vous cliquez sur le bouton à droite voir recapitulatif global entreprise et sur cette feuille, la cellule D3 est en marron foncée sans aucune inscription à l'intérieure.

Donc je met color 16777215 pour que D3 soit blanche.

Bonne réception.

vous cliquez sur le bouton à droite voir recapitulatif global entreprise et sur cette feuille, la cellule D3 est en marron foncée sans aucune inscription à l'intérieure.

Ok je viens de voir. C'est dû au fait que vous avez choisi une mise en forme de tableau prédéfinie.

Il me semble que l'on arrive au terme des modif. Il reste la rapidité à l'ouverture


Une chose que je vois dans vos feuilles et surtout la feuille accueil c'est la couleur de remplissage en blanc qui est faite sur 10000000 de lignes et rose sur des milliers de colonnes. çà ce n'est jamais à faire ! et inutile dans votre cas

Donc ce que je ferai en premier sur la feuille Accueil

- Sélectionnez la ligne juste en dessous de votre dernière ligne complétée (ici la 29)
- sur votre clavier appuyez sur CTRL + touche SHIFT + touche flèche vers le bas. cela sélectionne toutes les lignes jusque la fin de la feuille
- dans le menu excel Accueil, cliquez sur l'icone "couleur de remplissage"
- sélectionnez "Aucun remplissage"

- Faites de même avec les colonnes
- Sélectionnez X à la dernière colonne et mettez "aucun remplissage"
- une fois fait vous pourriez aussi masquer toutes les colonnes à droite

une fois terminé, faites la même chose dans la feuille Formulaire
Pour les lignes, une fois sélectionnées, vous pouvez les masquer. Idem pour les colonnes


Petit rappel, : n'oubliez pas que le nom des boutons dans la feuille formulaire, doit être identique à ce que vous avez en ligne 3 en feuille Rubrique.
Pour éviter les soucis, je vous conseille de ne pas utiliser les accents.

Re,

Une chose que je vois dans vos feuilles et surtout la feuille accueil c'est la couleur de remplissage en blanc

OK. Fait pour accueil et formulaire.

***Un petit problème.

Je suis sur formulaire.

Je saisis colonne F4 à F36 suivant suivant besoin.

1cas)Je valide. On me demande. Je reviens.

Comme il a été demandé, je suis bien resté en feuille formulaire, mais LÀ je ne me rappelle plus si j'ai validé avant de partir.Donc tendance à revalider une seconde fois.

2cas) L'exécution de la macro est tellement RAPIDEque je n'arrive pas à savoir si j'ai BIEN cliqué sur le bouton rouge ou pas. Donc tendance à revalider une seconde fois.

Votre contact est ENRICHISSANT, moi qui avait l'habitude d'avoir des macros avec déambulateur.

Serait il possible d'avoir la date de remise à zéro lorsque l'on a cliqué sur le bouton rouge.

Que pensez vous de cette proposition pour savoir si de cette facon, je sais que cela a bien été validé.

Cela m'oblige à ressaisir la date mais cela n'est pas un problème pour moi. Il faut bien que je modifie de F6 à F36 suivant besoin.

***Un petit problème.

Je suis sur formulaire. Cellule F38 N° ENR (par exemple 35)

Je saisis en cellule F4 (par exemple 24/10/23) et F6 à F36 suivant suivant besoin.

Je valide.

Je saisis en cellule F4 (par exemple 25/10/23).

Je valide.

Je saisis en cellule F4 (par exemple 26/10/23).

Je valide.

Je retourne en feuille accueil.

J'ai bien les 3 lignes avec les dates 24 25 et 26/10, mais elles ont TOUTES les 3, le même numéro à savoir 35.

Elles ne sont pas incrémentées de +1.

Bonne réception.

Cordialement.

1cas)Je valide. On me demande. Je reviens.

Comme il a été demandé, je suis bien resté en feuille formulaire, mais LÀ je ne me rappelle plus si j'ai validé avant de partir.Donc tendance à revalider une seconde fois.

Non parce que si vous valider, le code va effacer F4 à F38 via le CALL Saisir un nouveau client à la fin du code Ajout_Nouvelle_facture

2cas) L'exécution de la macro est tellement RAPIDEque je n'arrive pas à savoir si j'ai BIEN cliqué sur le bouton rouge ou pas. Donc tendance à revalider une seconde fois.

Réponse ci-dessus.

J'ai bien les 3 lignes avec les dates 24 25 et 26/10, mais elles ont TOUTES les 3, le même numéro à savoir 35.

idem que réponse au point 1

Je suis sur formulaire. Cellule F38 N° ENR (par exemple 35)

Je vous ai dit plusieurs fois que cette ligne doit être masquée.

Re,

OUI, vous avez tout à fait raison sur votre post précédent.

Le pire c'est que je n'arrive pas à refaire pour me retrouver dans la configuration ou je vous ai expliqué ces problèmes.

Comment j'ai pu me trouver dans cette situation?????

Est ce que je n'ai pas validé et j'ai fermé excel????

Je ne sais pas ce que j'ai fabriqué.

En m'excusant.

Cordialement

NB la cellule F38 est bien masquée.

Re,

J'ai refait des tests et c'est tout bon.

Ok parfait

Vérifiez bien pour les couleurs dans chaque feuille.
dans "choisir critère", vous pourriez supprimer les couleurs après la ligne 193 et ramener vos boutons de droite plus à gauche pour supprimer aussi les couleurs depuis la colonne M jusque la dernière colonne

Ensuite vous masquez éventuellement et enlevez le quadrillage

Idem pour la feuille rubrique

Les feuilles Recap sont bonnes en l'état

Vous devriez voir une petit amélioration à l'ouverture, je pense

Re,

Juste ce petit mot pour vous dire que je suis entrain de finaliser mais ne pourrais pas vous répondre avant trois jours cause absence.

Bonne fin de semaine.

Cordialement.

Bonne réception.

Bonjour Dan.

Vous devriez voir une petit amélioration à l'ouverture, je pense

Très certainement, mais personnellement je ne vois pas une grosse différence.

Allez tout de même jeter un oeil sur le fichier réalisé pour Breizhinours

En vous remerciant pour ce lien.

J'ai regardé, mais je ne suis pas assez bon en vba pour comprendre ce fichier.

Si j'ai besoin de modifier un paramètre, j'ai peur de ne pouvoir y arriver.

Je préfére votre fichier par lequel j'arrive à m'y retrouver.

Vous avez su faire vos fonctions en vous adaptant à mes noms de fonctions ou de modules.

Et en plus, vous m'avez guidé à chaque étape et m'expliquant les modifications à effectuer et le pourquoi.

Pour moi c'est super car j'arrive à savoir ce que je fais.

Les modifications que j'ai effectuées:

1)Dans module MODIF_LIGNE_ENTRPRISE_NUMERO

Fonction: Sub MODIFICATION_LIGNE_ENTREPRISE()

A partir de la cellule F18 jusqu'à F36 j'ai rajouté Ucase pour obtenir le descriptif en majuscule lors d'éventuelles modifications.

tb.DataBodyRange(lig, 11) = UCase(.Range("F18").Value) 'commentaire

2) Je suis sur la feuille CHOISIR CRITERES.

J'ai fait le choix d'avoir un tableau DATE avec une feuille dont les quatre premières lignes horizontales sont figées. Ce qui fait que je peux descendre au niveau de la ligne (par exemple 60) pour selectionner une date. Je vais en feuille RECAPITULATIF.

Je reviens sur feuille CHOISIR CRITERES par l'intermédiaire du bouton RETOUR CHOISIR SES CRITERES. Et je suis toujours au niveau de la ligne 60.

Dans le module RECAPITULATIF fonction Sub VOIR_SEGMENTS() en faisant pas à pas, il y a bien après Call SUPPRIMER_LES_CHOIX un range A1 qui sélectionne bien la cellule a1 mais je reste au niveau de la ligne 60.

J'ai essayé d'incorporer une "multitude" de fonctions sans aucune action.

La seule qui me donne satisfaction est votre fonction de:

Module: DEPLACEMENT

Fonction: Sub TOUT_AFFICHER()

Dim nbcolumns As Integer (et les lignes suivantes)

Que j'ai incorporé au:

Module: RECAPITULATIF

Fonction: Sub VOIR_SEGMENTS()

Juste avant Call SUPPRIMER_LES_CHOIX.

Et cela fonctionne très bien.

Ce qui est appréciable dans votre façon de faire est que la fonction VOIR SEGMENTS, sert lorsque l'on est sur la feuille RECAPITULATIF bouton RETOUR CHOISIR SES CRITERES ou sur la feuille ACCUEIL bouton vert VOIR RECAPITULATIF PAR ENTREPRISE.

J'ai fait la même chose, toujours dans module RECAPITULATIF

Fonction: Sub VOIR_RECAPITULATIF()

Entre End Witch et Sheets("CHOISIR CRITERES").Visible = False

et

Fonction: Sub VOIR_RÉCAPITULATIF_ANNUEL()

Entre End Witch et Sheets("ACCUEIL").Visible = False

Ce que j'ai fait est il correct?

Pour une entreprise ou j'ai un prévisionnel > 0€ et un montant ht = 0€ OU un prévisionnel = 0€ et un montant ht > 0€

Concernant les cellules F14 et F16 de la feuille FORMULAIRE, si une des deux est en valeur 0€00 dans la feuille RECAPITULATIF, dans une colonne que j'ai rajoutée pour effectuer un calcul en pourcentage, en résultat, il m'affiche: #DIV/0!

Si je rentre (en manuel pour test) une valeur de 0€001 en ACCUEIL, je n'ai plus ce problème et le calcul se fait bien.

J'ai essayé lorsque je suis sur FORMULAIRE de mettre (en F14 ou F16) 0€001. La cellulle me prend 0€00. La barre de formule me prend 0.001. Je valide, et en ACCUEIL la cellule est vide, la barre de formule est à 0 tout seul et la colonne G est en monétaire avec deux décimales.

Lorsque l'on est sur la feuille FORMULAIRE, lorsque l'on clique sur le bouton rouge serait-il possible d'avoir une fonction qui dise que si la cellule F14 = 0€00 cela inscrive 0€001. Pareil pour la cellule F16 (MONTANT H.T.).

Autrement pour moi tout le reste fonction à MERVEILLE.

Bonne réception.

Cordialement.

Bonjour,

Lu en masse comme cela, je me perds un peu avec tous les sauts à la ligne....

Point 1 : OK
Point 2 : cela semble OK

Points suivants :

Concernant les cellules F14 et F16 de la feuille FORMULAIRE, si une des deux est en valeur 0€00 dans la feuille RECAPITULATIF, dans une colonne que j'ai rajoutée pour effectuer un calcul en pourcentage, en résultat, il m'affiche: #DIV/0!

Si vous divisez un nombre par 0, cela vous donnera une erreur. Donc logique que si vous mettez 0.001 eur. cela ne vous donne plus d'erreur

J'ai essayé lorsque je suis sur FORMULAIRE de mettre (en F14 ou F16) 0€001. La cellulle me prend 0€00.

Heu logique.... La barre de formule renseigne le montant entré. La cellule reprend le même montant avec le nombre de décimales que vous voulez. Allez voir dans le format de la cellule.

Lorsque l'on est sur la feuille FORMULAIRE, lorsque l'on clique sur le bouton rouge serait-il possible d'avoir une fonction qui dise que si la cellule F14 = 0€00 cela inscrive 0€001. Pareil pour la cellule F16 (MONTANT H.T.).

C'est un peu compliqué çà de faire un code pour afficher des décimales. Restez simple...
Sélectionnez votre cellule et allez dans le menu excel Format --> Monétaire --> là choisir 3 décimales.

Re,

Sélectionnez votre cellule et allez dans le menu excel Format --> Monétaire --> là choisir 3 décimales.

Oui, je l'ai fait, mais le problème est que:

Je valide, et en ACCUEIL la cellule est vide, la barre de formule est à 0 tout seul et la colonne G est en monétaire avec deux décimales.

Et à trois décimales en colonne G ACCUEIL, (j'ai mis 0.00€ en formulaire dans le prévisionnel) et la cellule en G (colonne prévisionnel de la feuille ACCUEIL) est vide, la barre de formule contient un seul 0. En revanche, tous les chiffres rentrés en colonne G sont bien passés à trois décimales. --->

J'ai mis la cellule F14 du formulaire également à trois décimales, la cellule F14 est bien avec 3 décimales, la barre de formule comporte bien 3 décimales et sur la feuille ACCUEIL la cellule en G est vide et la barre formule ne comporte qu'un zéro.

De la feuille formulaire en F14 je suis en 0.001€ et je passe à 0 en G ACCUEIL sans avoir les trois décimales dans la barre de formule. Que la celulle soit vide, ne me gene pas sur le principe , mais je n'arrive pas à avoir les trois décimales dans la barre de formule qui réglerait le problème.

Bonne réception.

sur la feuille ACCUEIL la cellule en G est vide et la barre formule ne comporte qu'un zéro.

le souci ce sont les options que vous avez choisies dans votre fichier excel

Une fois le fichier ouvert, allez dans le menu Fichier --> Autres --> Options
Cliquez sur "Option Avancées" et descendez jusque la rubrique "Option affichage de calcul"
Là cochez la case "Afficher un zéro dans les cellules qui ont une valeur nulle"

ensuite mettez le format de cellule de la colonne G pour avoir vos 3 décimales

je passe à 0 en G ACCUEIL sans avoir les trois décimales dans la barre de formule.

Hum çà c'est normal. 0 c'est 0.

Bonjour Dan,

Là cochez la case "Afficher un zéro dans les cellules qui ont une valeur nulle"

OK. je l'ai fait.

Mais cela ne change pas le problème. Si je rentre un 0.001 en formulaire, en accueil il y a que 0.000 sans les décimales en colonne G et 0 dans la barre de formule.

Je régle le problème en mettant 0.100 en formulaire et là, j'ai bien 0.100 en colonne G de la feuille accueil et 0.100 dans la barre de formule.

Une autre demande.

Je suis en feuille formulaire, je remplis la colonne F et, je me trompe de bouton et je clique sur le bouton vert, RETOUR VERS ACCUEIL au lieu de cliquer sur le bouton rouge. Ayant cliqué sur retour ACCUEIL, je retourne donc en ACCUEIL (normal). Je clique sur AJOUTER UNE FACTURE et là, tout est effacé. (normal). Il me faut resaissir.

Dans le cas d'un clique (malencontreux) sur RETOUR ACCUEIL alors que la date (au minimum) est remplie, serait-il possible de dire qu'il faut valider les valeurs rentrées en colonne F (donc cliquer sur le bouton rouge) avant de retourner en accueil.

J'ai incorporé cette fonction dans le module retour juste entre la fonction Sub RETOUR_ACCUEIL() et With Sheets("ACCUEIL")

For i = 4 To 4 Step 2
    With Sheets("FORMULAIRE")
        If .Cells(i, "F") <> vbNullString Then
            'MsgBox "Veuillez compléter le " & .Cells(i, "D") & " en cellule " & .Cells(i, "F").Address, vbCritical
            MsgBox "Veuillez valider la saisie avant de retourner en accueil", vbCritical

    'SE POSITIONNE SUR LA CELLULE.
            .Cells(i, "F").Select
            Exit Sub
        End If
    End With
Next i

J'ai laissé step 2 car je ne sais pas à quoi correspond le 2.

Celle-ci fonctionne bien mais est-ce correct?

Bonne réception.

Bien cordialement.

Bonjour

Mais cela ne change pas le problème. Si je rentre un 0.001 en formulaire, en accueil il y a que 0.000 sans les décimales en colonne G et 0 dans la barre de formule.

Effectivement c'est assez curieux. Essayez en modifiant ces deux lignes dans le code "Ajouter nouvelle Facture"

.Item(lig, 7) = Format(Sheets("FORMULAIRE").Range("F14").Value, "#,##0.0000 €") 'Previsionnel
.Item(lig, 8) = Format(Sheets("FORMULAIRE").Range("F16").Value, "#,##0.0000 €") 'Montant HT

Dans le cas d'un clique (malencontreux) sur RETOUR ACCUEIL alors que la date (au minimum) est remplie, serait-il possible de dire qu'il faut valider les valeurs rentrées en colonne F (donc cliquer sur le bouton rouge) avant de retourner en accueil

C'est un peu curieux votre demande là. Car déjà pour aller cliquer sur le bouton situé à droite du tableau au lieu du bouton rouge à gauche....
Faire cela va vous bloquer, si finalement vous changez d'avis à savoir que vous ne voulez pas rentrer de données en feuille accueil...


J'ai incorporé cette fonction dans le module retour juste entre la fonction Sub RETOUR_ACCUEIL() et With Sheets("ACCUEIL")

Non surtout pas. Le code est utilisé pour le retour depuis les autres feuilles !
Puis si vous utilisez un autre bouton que "retour accueil".... ou que vous cliquez sur retour accueil depuis une autre feuille que vous aviez activée depuis la feuille formulaire ?

La boucle For 1 =4 to 4 n'a pas de sens. Autant ne rien mettre puisque vous êtes sur i = 4 et que vous restez sur 4
Evitez d'être dans le détail, vous parlez de F4 mais rien n'empêche l'utilisateur de commencer par F8 ou ailleurs avant la date ... là on va faire quoi ?

A votre place je laisserais comme cela. Si l'on se trompe, il vaut mieux recommencer que de prévoir des codes pour palier à ce genre d'erreur.


EDIT : en fait cela ne fonctionne pas la modification de code. Apparemment ceci fonctionne 0.01 mais pas 0.001
La question est de savoir si cela risque d'arriver....

Rechercher des sujets similaires à "mettre ligne tableau"