Mettre les cellules d'une ligne dans un tableau

Bonjour Dan,

Ne pas tenir compte de mon dernier post concernant sub retour_rubrique.

Cordialement.

Bonjour,

J'avais un message erreur éxecution 1004 (code Voir segments)

Je n'avais pas vu puisque la feuille "Recap Annuel" n'était pas protégée.
C'est un peu votre souci car vous mettez des protections partout mêmes lorsque les feuilles sont masquées. Cela pourrait être plus simple.

Ok pour l'ajout de la ligne juste en dessous de la ligne Sub Voir_segments

Sheets("RECAPITULATIF ANNUEL").Unprotect

Pour la sub Retour_rubrique, je n'ai pas regardé ce code. Je dois encore le faire.
Mais c'est inutile de vouloir trier tous les tableaux dès que vous quittez la feuille. Il suffit d'uniquement trier le tableau où vous avez fait une modification


Autres points : Afin d'élaguer un peu, je vous propose les modifications suivantes :
1. Module Allerrubrique
- Déplacer le code Sub Rubrique dans le module Rubrique.
- Supprimer le module Allerrubrique

2. Supprimer les modules suivants :
- Concerverenregistrementnom
- Effacerformulairenouvellesaisie
- Enregsitrernouvellesaisie
- Retour_accueil_saisie
- Modules 2, 3, 4, 5, 12, 15 et 16

Re bonjour,

Sheets("RECAPITULATIF ANNUEL").Unprotect

OK ,fait.

et tous les autres points faits.

Je vais m'absenter maintenant jusqu'à environ 17 heures 00.

Bonne journée.

OK. Pour votre absence.

Voici le code Retour_rubrique que je vous propose de placer aussi dans le module Rubrique

Sub RETOUR_RUBRIQUE()
'RETOUR_RUBRIQUE Macro
Application.ScreenUpdating = False
Dim LO As ListObject
Dim i As Byte

With Sheets("RUBRIQUE")
    For Each LO In .ListObjects
        If LO.ListRows.Count > 1 Then
            LO.Range.Sort LO.Range(1), xlAscending, Header:=xlYes
            For i = 1 To LO.ListRows.Count
                With LO.DataBodyRange(i, 1)
                    If .Value <> UCase(.Value) Then .Value = UCase(.Value)
                End With
            Next i
         End If
    Next LO
End With

With Sheets("FORMULAIRE")
    .Visible = True
    .Activate
    .Range("F4").Select
End With

With Sheets("RUBRIQUE")
    .Protect
    .Visible = False
End With
End Sub

Ensuite on peut supprimer, le module RETOUR_RUBRIQUE ou peut-être mieux dans le module RETOUR

Re,

J'ai mis la fonction:

Sub RETOUR_RUBRIQUE()

Dans le

module RETOUR

Je suis sur formulaire et je saisis un nouveau nom. Il y a bien une ligne qui se crée à la fin du tableau. je saisis a minuscule. Je valide, et je reviens en FORMULAIRE et le a est bien en 1ère position et en majuscule. Donc PARFAIT

Je supprime des noms du tableau. Par exemple la quatrième, sixème et huitème ligne du tableau. Je valide et je reclique sur nom.

Cela se reclasse bien, mais il reste 3 lignes vident à la fin du tableau.

La cellule se positionne en quatrième ligne. Je rentre donc un nom en quatrième et une ligne se crée bien et valide bien.

Je me suis "amusé" à saisir les dix premières lettres de l'alphabet, valider, revenir en formulaire et supprimmer ces dix lettres. Je valide et reviens en formulaire et,

Les 3 + 10 lignes vident sont restées.

Si je saisis un nom et que je ne valide pas en faisant ENTRÉE mais que je clique sur le bouton de la macro, j'ai ce message d'erreur:

Erreur 1004

La méthode auto fit de la classe range a échoué.

Cela bloque dans le module feuil2(RUBRIQUE) au niveau de columns("A:AS").autofit

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:AS" & UsedRange.Rows.Count)) Is Nothing Then
    Columns("A:AS").AutoFit

Bonne réception

Si je saisis un nom et que je ne valide pas en faisant ENTRÉE mais que je clique sur le bouton de la macro, j'ai ce message d'erreur:

Quel bouton ?


Cela se reclasse bien, mais il reste 3 lignes vident à la fin du tableau.

Dans le module retour, remplacez le code

Sub RETOUR_RUBRIQUE()
'RETOUR_RUBRIQUE Macro
Application.ScreenUpdating = False
Dim LO As ListObject
Dim i As Byte, n As Byte

With Sheets("RUBRIQUE")
    For Each LO In .ListObjects
        If LO.ListRows.Count > 1 Then
            LO.Range.Sort LO.Range(1), xlAscending, Header:=xlYes
            n = WorksheetFunction.CountA(LO.ListColumns(1).DataBodyRange)
            If n > 0 Then LO.Resize LO.Range.Resize(n + 1)
            For i = 1 To LO.ListRows.Count
                With LO.DataBodyRange(i, 1)
                    If .Value <> UCase(.Value) Then .Value = UCase(.Value)
                End With
            Next i
         End If
    Next LO
End With

With Sheets("FORMULAIRE")
    .Visible = True
    .Activate
    .Range("F4").Select
End With

With Sheets("RUBRIQUE")
    .Protect
    .Visible = False
End With
End Sub

Pour le code placé dans la feuille RUBRIQUE, remplacez-le par celui-ci

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dcol As Integer

dcol = Cells(3, Columns.Count).End(xlToLeft).Column
If Not Application.Intersect(Target, Range(Cells(3, 1), Cells(UsedRange.Rows.Count, dcol))) Is Nothing Then
    Columns("A:AS").AutoFit
    'deplacement bouton en rapport a colonne choisie
    With DrawingObjects(1)
        .Top = Cells(1, Target.Column).Top
        .Left = Cells(1, Target.Column).Left
    End With
End If
End Sub

Re,

Quel bouton ?

Le bouton RETOUR FORMULAIRE de la feuille FORMULAIRE.

Avec les deux nouveaux codes, IMPECCABLE.

En revanche, si je ne valide par la touche entrée et que que je clique sur RETOUR FORMULAIRE, j'ai toujours le même message d'erreur.

Mais ne vous embetez pas, je sais qu'il faut valider par entrée avant de cliquer sur le bouton RETOUR FORMULAIRE.

C'est juste une habitude à prendre.

Vous en faites déjà beaucoup pour moi. En vous remerciant.

Bonne réception

Bonsoir Dan,

Je serai absent et ce pour environ trois ou quatre jours.

En vous souhaitant un bon week-end.

Bonne réception.

Bien cordialement.

Bonjour

En revanche, si je ne valide par la touche entrée et que que je clique sur RETOUR FORMULAIRE, j'ai toujours le même message d'erreur.

C'est un peu une manière bizarre de fonctionner. habituellement on entre une donnée dans une cellule, on valide toujours par les touches Entree, flèches ou Tab... curieux

Sinon bah, dans le code Private sub working_change de la feuille Rubrique, remplacez

Columns("A:AS").AutoFit

par ceci

    On Error Resume Next
    Columns("A:" & Split(Columns(dcol).Address, "$")(2)).AutoFit
    On Error GoTo 0

Autre point à faire que je viens de voir, c'est le bouton Jaune "Effacer formulaire" qui se trouve sur la feuille Formulaire, associez-le à la macro Sub SAISIR_UN_NOUVEAU_CLIENT()

En attendant votre retour pour la suite, bon WE

Bonjour Dan,

    On Error Resume Next
    Columns("A:" & Split(Columns(dcol).Address, "$")(2)).AutoFit
    On Error GoTo 0

Fait. IMPECCABLE.

associez-le à la macro Sub SAISIR_UN_NOUVEAU_CLIENT()

OK. Fait.

Bonne réception.

Bonjour

Feuille choix critère :
- A quoi sert le bouton Rouge "Page choisir critère" car il n'y a pas de code associé ?
- Le bouton "supprimer les choix" que l'on avait revu. A y regarder je pense que l'on ne devrait pas protéger la feuille lors du clic sur ce bouton. Si on supprime les choix c'est pour en refaire. Donc désactivez la ligne Protect à la fin du code ou alors mettez l'instruction Drawingobjects à FALSE au lieu de TRUE pour autoriser les choix de segments sur feuille Protégée.
On simplifie et cela permet de supprimer le bouton Jaune "Pour choisir ses critères...."

Feuille Recapitulatif
- Le bouton "Retour choix critère" doit être associé au code "Voir Segments"
- Le bouton Rouge Page facture : Sert-il encore et si oui, quel est le but final ?

Module 1 : à supprimer. On a juste un code "Sub ENTREPRISE_Bouton1_Cliquer" qui, si je ne me trompe, ne sert plus.

Bonjour Dan,

A quoi sert le bouton Rouge "Page choisir critère" car il n'y a pas de code associé ?

Tout à fait. Il n'y a rien d'associer. C'est tout simplement mon intitulé de page.

J'ai la même chose en page RECAPITULATIF, bouton rouge PAGE FACTURES SUIVANT CRITÈRES. C'est aussi un intitulé de page.

Le bouton "supprimer les choix" que l'on avait revu désactivez la ligne Protect à la fin du code

OK. Fait.

ou alors mettez l'instruction Drawingobjects à FALSE au lieu de TRUE

JE N'AI PAS TROUVÉ CETTE INSTRUCTION.

On simplifie et cela permet de supprimer le bouton Jaune "Pour choisir ses critères...."

OK. Fait.

- Le bouton "Retour choix critère" doit être associé au code "Voir Segments"

OK. Fait.

Feuille Recapitulatif- Le bouton Rouge Page facture : Sert-il encore et si oui, quel est le but final ?

C'est aussi un intitulé de page.

Module 1 : à supprimer. si je ne me trompe, ne sert plus.

OUI. Tout à fait.

Donc j'ai supprimé le module 1.

Bonne réception.

Re,

Lorsque je suis sur la feuille FORMULAIRE, et que je clique sur le bouton ROUGE ENREGISTRER NOUVELLE SAISIE, serait il possible d'avoir une remise à zero des cellules F4 à F38.

J'ai essayé d'incorporer la fonction suivante: .Range("F4:F38").ClearContents 'remise a zero formulaire

        .Item(lig, 19) = UCase(Sheets("FORMULAIRE").Range("F34").Value) 'J
        .Item(lig, 20) = UCase(Sheets("FORMULAIRE").Range("F36").Value) 'K

    .Range("F4:F38").ClearContents 'remise a zero formulaire

End With
End With

Sheets("ACCUEIL").Activate
End Sub

dans

Sub Ajout_Nouvelle_facture()

Mais, il n'aime pas.

Bonne réception.

Bonjour Dan,

Dans mon post précedent, j'ai oublié de préciser que c'était pour un ÉVENTUEL autre dossier.

En aucun cas, ily a une remise à zéro de celulles F4 à F36 lorsque l'on a cliqué sur le bouton rouge de la feuille FORMULAIRE.

Pour moi, que ce soit un autre dossier ou éventuellement le dossier COUT CONSTRUCTION, la fonction:

.Range("F4:F38").ClearContents 'remise a zero formulaire

était bien écrite et bien positionnée, ce qui devait me remettre à zéro les cellules F4 à F38.

Mais ce n'est pas le cas.

Bonne réception.

Bonjour

Tout à fait. Il n'y a rien d'associer. C'est tout simplement mon intitulé de page

Evitez au max les objets sur vos feuilles lorsque vous pouvez faire autrement. Mieux est de consacrer votre ligne 1 à l'intitulé de votre page

ou alors mettez l'instruction Drawingobjects à FALSE au lieu de TRUE
JE N'AI PAS TROUVÉ CETTE INSTRUCTION.

Dans le code Supprimer les choix on avait cette ligne --> .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True (enfin en principe)
Donc si vous voulez garder la protection, j'écrivais de mettre l'instruction DrawingObjects:=false au lieu de True
Mais si vous avez supprimé le Protect, c'est aussi bon
NB : Vous ne le savez probablement pas mais évitez d'écrire vos réponses en majuscules. Sur les forums cette manière est considérée comme si vous criiez sur les personnes.

Lorsque je suis sur la feuille FORMULAIRE, et que je clique sur le bouton ROUGE ENREGISTRER NOUVELLE SAISIE, serait il possible d'avoir une remise à zero des cellules F4 à F38.
Dans mon post précedent, j'ai oublié de préciser que c'était pour un ÉVENTUEL autre dossier.En aucun cas, ily a une remise à zéro de celulles F4 à F36 lorsque l'on a cliqué sur le bouton rouge de la feuille FORMULAIRE.
......que ce soit un autre dossier ou éventuellement le dossier COUT CONSTRUCTION,

Actuellement le bouton Rouge enregistre les données en feuille Accueil puis active la feuille Accueil (dernière ligne du code Ajout_Nouvelle_facture)
La remise à Zéro ne sert pas puisque quand vous cliquez sur le bouton "ajouter une facture" sur la feuille Accueil, le code va effacer d'abord effacer les données de la feuille Formulaire via le code "Saisir_un_nouveau_client".
Le seul cas que je verrais, c'est si vous ne retournez pas sur la feuille Accueil après l'ajout d'une facture

NB : je n'ai pas compris votre mention "éventuel autre dossier"

Expliquez-moi ce que vous faites que je comprenne.

Re,

Mieux est de consacrer votre ligne 1 à l'intitulé de votre page

OK.Merci pour le conseil.

Dans le code Supprimer les choix on avait cette ligne --> .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True (enfin en principe)

Normalement, non, mais problème solutionné.

https://forum.excel-pratique.com/s/goto/1167170

Je vais incorporer cette fonction à la place du .protect

 .Protect DrawingObjects:=false, Contents:=True, Scenarios:=True 

NB : Vous ne le savez probablement pas mais évitez d'écrire vos réponses en majuscules. Sur les forums cette manière est considérée comme si vous criiez sur les personnes.

Avec toutes mes excuses, mais ne le savez pas.

NB : je n'ai pas compris votre mention "éventuel autre dossier"

Oui, je suis tout à fait d'accord avec vous concernant vos remarques avant NB.

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

Une fois que je suis sur la feuille formulaire, je valide par le bouton rouge, et au contraire du dossier actuel, j'aurais besoin de tout effacer concernant les celulles F4 à F36, sans avoir à retourner sur la feuille accueil, de facon à effectuer une autre saisie sur des cellules vides ou vierges.

Je sais que si pas possible, j'ai toujours une porte de sortie, en cliquant sur le bouton jaune et rouge effacer formulaire et nouvelle saisie.

Le seul cas que je verrais, c'est si vous ne retournez pas sur la feuille Accueil après l'ajout d'une facture

C'est exactement cela.

Bonne réception.

Une fois que je suis sur la feuille formulaire, je valide par le bouton rouge, et au contraire du dossier actuel, j'aurais besoin de tout effacer concernant les celulles F4 à F36, sans avoir à retourner sur la feuille accueil, de facon à effectuer une autre saisie sur des cellules vides ou vierges.

Si vous ne voulez plus retourner sur la feuille accueil après avoir cliqué sur le bouton Rouge :

1. Allez dans le module Saisie nouvelle entreprise
2. dans le code "Sub Ajout_Nouvelle_facture()" juste avant le END SUB
- supprimez (ou désactivez) la dernière ligne qui active la feuille Accueil
- ajoutez l'instruction ci-dessous

Call SAISIR_UN_NOUVEAU_CLIENT

Je sais que si pas possible, j'ai toujours une porte de sortie, en cliquant sur le bouton jaune et rouge effacer formulaire et nouvelle saisie.

Non parce que je vous ai expliqué qu'actuellement le fait de cliquer sur le bouton Rouge vous renvoie à la fin sur la feuille Accueil. En recliquant sur le bouton Ajout une Facture, cela videra d'abord le formulaire.
Si vous cliquez sur le bouton Jaune puis sur le rouge, cela va vous créer une ligne vide. Donc ce n'est pas à faire...

Re,

J'ai essayé en incorporant:

Call SAISIR_UN_NOUVEAU_CLIENT

et en mettant:

'Sheets("ACCUEIL").Activate
End Sub

Cela fonctionne parfaitement. Me sera utile si je fais mon dossier pêche.

J'ai remis un apostrophe devant call et retiré l'apostrophe devant sheets pour me retrouver comme avant.

Grand merci.

Bonne réception.

Ok. On peut passer aux affichages feuilles

Lorsque vous cliquez sur le bouton "Retour accueil" depuis n'importe quelle feuille, vous devez automatiquement masquer toutes les feuilles ?

Actuellement dans certains cas, certaines feuilles restent visibles

Re,

vous devez automatiquement masquer toutes les feuilles ?

OUI.

Actuellement dans certains cas, certaines feuilles restent visibles

Exact.

Bonne réception.

Rechercher des sujets similaires à "mettre ligne tableau"