Mettre les cellules d'une ligne dans un tableau

Re

Quel nom de module avez-vous donné pour les trois codes ?

Sub TOUT_AFFICHER()

Je n'ai rien changé.

J'ai laissé le code et le module a part.

J'ai conservé l'instruction: Application.Goto Worksheets("ACCUEIL").Range("A1"), True

Voir le pourquoi ci-dessous.

En revanche, je ne l'aI pas mis dans le module DEPLACEMENT.

Faut-il le mettre????

module = TOUTAFFICHER

Sub monter()

et

Sub descendre()

module = DEPLACEMENT

Maintenant si le bouton Tout afficher supposait d'afficher le tableau entier avec la ligne 4, cela peut se faire. Dites-moi si intérêt

Votre principe de flèche pour monter ou descendre m'a donné l'idée de mettre une flèche sens gauche à la place du bouton TOUT AFFICHER.

De la-dessus, je me suis dit, pourquoi aller en bas à droite et cliquer sur la flèche windows pour aller à droite. (image que je vous ai jointe dans post précedent) pourquoi ne pas remettre une flèche droite à coté de la gauche.

De la dessus, j'ai "pompé" votre code pour créer une flèche avec le code pour aller à droite.

Il faut dire que je suis assez content de moi puisque cela fonctionne.

Je conserve toujours la fonction du bouton TOUT AFFICHER pour le cas ou je souhaite revenir directement en A1.

Sub ALLER_GAUCHE_Cliquer()

Dim nbcolumns As Integer

With ActiveWindow
    nbcolumns = .VisibleRange.Columns.Count
     If .ScrollColumn - nbcolumns <= 0 Then
        .ScrollColumn = 1
    Else: .ScrollColumn = .ScrollColumn - nbcolumns
    End If
End With
If ActiveSheet.Protect = False Then ActiveSheet.Protect
End Sub
Sub ALLER_DROITE_Cliquer()

Dim nbcolumns As Integer

With ActiveWindow
    nbcolumns = .VisibleRange.Columns.Count
     If .ScrollColumn + nbcolumns <= 0 Then
        .ScrollColumn = 1
    Else: .ScrollColumn = .ScrollColumn + nbcolumns
    End If
End With
If ActiveSheet.Protect = False Then ActiveSheet.Protect
End Sub

module = DEPLACEMENTHORIZONTAL

J'ai renommer TOUT AFFICHER par AFFICHER DÉBUT.

fleche

Bonne réception.

Votre principe de flèche pour monter ou descendre m'a donné l'idée de mettre une flèche sens gauche à la place du bouton TOUT AFFICHER.

Ok pour vos flèches c'est à vous de voir.
De mon coté j'utilise les fonctionnalités d'excel avant de mettre des codes qui peuvent être évités si excel le fait de base


Ne compliquez pas, mettez tous ces codes dans un seul module que vous appelez "Deplacement" par exemple.
Vous devez absolument alléger. Sans quoi cela devient une usine à gaz et là avec Excel on y est très vite et ne s'y retrouve plus.


Application.Goto Worksheets("ACCUEIL").Range("A1"), True

Elle ne sert à rien.
Puis éviter les GO TO, cela me fait penser à de la programmation des années 90,

Vous voulez faire quoi avec cette instruction ? Sélectionner la cellule A1 ?
Dans quel code la mettez vous ? le code Toutafficher ?


Je conserve toujours la fonction du bouton TOUT AFFICHER

C'est à dire ? Je ne comprends pas ce que vous faites

Re

Ne compliquez pas, mettez tous ces codes dans un seul module que vous appelez "Deplacement" par exemple.

OK. C'est fait.

J'ai supprimer deplacementhorizontale et j'ai tout mis dans le module deplacement.

Vous voulez faire quoi avec cette instruction ? Sélectionner la cellule A1 ?

Oui. Si par exemple je suis en cellule T366 en cliquant sur AFFICHER TOUT ou maintenant AFFICHER DEBUT, je vais sur la cellule A1

Dans quel code la mettez vous ? le code Toutafficher ?

OUI. Tout à fait.

Je conserve toujours la fonction du bouton TOUT AFFICHER

C'est à dire ? Je ne comprends pas ce que vous faites

Explications au dessus.

Puis éviter les GO TO, cela me fait penser à de la programmation des années 90,

C'est la seule fonction dans mes compétences en vba que je connaisse qui me permette de revenir en A1 si je suis en cellule T366.

Bonne réception.

Bonjour Dan,

Je vais être absent de maintenant jusqu'à lundi milieu d'après midi.

Bonne fin de semaine et bon week end.

Encore merci pour ce que vous faites pour moi.

Vous me direz si je dois mettre résolu pour clore ce sujet!

Bonne réception.

Cordialement.

J'ai supprimer deplacementhorizontale et j'ai tout mis dans le module deplacement.

Ok. Je résume pour ce module DEPLACEMENT, on a donc les codes ci-dessous
-Sub monter()
-Sub descendre()
-Sub ALLER_GAUCHE_Cliquer()
-Sub ALLER_DROITE_Cliquer()
-Sub Toutafficher()

Vous confirmez ?


Oui. Si par exemple je suis en cellule T366 en cliquant sur AFFICHER TOUT ou maintenant AFFICHER DEBUT, je vais sur la cellule A1

OK. Si le bouton Affiche début concerne la visibilité du tableau complet, le code simplifié comme ceci

Sub TOUT_AFFICHER()
Dim nbcolumns As Integer

With ActiveWindow
    .ScrollColumn = 1
    .ScrollRow = 1
End With

With ActiveSheet
    .Range("A1").Select
    If .Protect = False Then .Protect
End With
End Sub

Avec ce code plus besoin de cliquer plusieurs fois pour revenir au tableau complet


Je vous propose de passer aux modules CREER......, qui concernent la feuille Rubrique
Là vous avez une série de module. Chaque module reprend uniquement un code concerné par un bouton placé à droite dans la feuille Formulaire
La modification que je vous ai préparée fait en sorte que vous n'aurez plus qu'un seul Module et un seul code pour tous vos boutons

Pour terminer, j'ai besoin de savoir deux choses à ce sujet :
- Le nom du future module.
- Si vous conservez vos point derrière chaque nom placé dans le bouton. Le plus simple étant de ne pas avoir de point car le code va repérer la correspondance entre le texte dans le bouton et le titre des colonnes en feuille Rubrique

Crdlt

Re

Ok. Je résume pour ce module DEPLACEMENT, on a donc les codes ci-dessous

Vous confirmez ?

OUI. Tout à fait.

OK. Si le bouton Affiche début concerne la visibilité du tableau complet, le code simplifié comme ceci

OK. C'est fait et fonctionne bien.

Pour terminer, j'ai besoin de savoir deux choses à ce sujet :

- Le nom du future module.

RUBRIQUE.

- Si vous conservez vos point derrière chaque nom placé dans le bouton.

Si vous conseillez de ne pas mettre de point, je vous suis.

Vous me direz si je dois mettre résolu pour clore ce sujet!

Je vais être absent de maintenant jusqu'à lundi milieu d'après midi.

Bonne réception.

Cordialement.

Ok. Pour le module RUBRIQUE

Si vous conseillez de ne pas mettre de point, je vous suis.

Ok. Donc là vous pouvez déjà :
- supprimer tous les points sur vos boutons
- Supprimer tous les modules CREER (de mon coté, j'ai juste renommé CREER_NOM en RUBRIQUE et supprimé tous les modules CREER...)
- Creer le module RUBRIQUE

Je vous donne le code sous peu


Bah ne mettez pas résolu, à moins que vous vouliez arrêter les modif que je peux vous proposer

Je vais être absent de maintenant jusqu'à lundi milieu d'après midi.

Par des souci. Bon WE à vous

Bonjour Dan.

De retour.

supprimer tous les points sur vos boutons

C'est fait.

Supprimer tous les modules CREER

C'est fait.

Creer le module RUBRIQUE

C'est fait.

renommé CREER_NOM en RUBRIQUE

C'est fait.

Bah ne mettez pas résolu

OK.

Bonne réception.

Bonjour

Vous avez trois choses à effectuer

1. Code Ajout_Rubrique (j'ai donné ce nom au code).
Placez le code dans le modèle Rubrique que vous avez créé

Option Explicit
Sub AJOUT_RUBRIQUE()
Dim metier As String
Dim col As Integer
Dim tb As ListObject

metier = Sheets("FORMULAIRE").Shapes(Application.Caller).DrawingObject.Caption
'metier = Left(metier, Len(metier) - 1) 'ligne à ajouter si point apres texte dans bouton

With Sheets("RUBRIQUE")
    On Error Resume Next
    col = WorksheetFunction.Match(metier, .Rows(3), 0)
    If col = 0 Then MsgBox "Le metier ne semble pas connu ou inexistant en feuille Rubrique", vbCritical, "Rubrique manquante": Exit Sub
    On Error GoTo 0
    .Visible = True
    .Activate
    .Unprotect

    'selectionner rubrique a modifier
    Set tb = .Cells(3, col).ListObject
    tb.ListRows(tb.ListRows.Count).Range.Offset(1, 0).Select

    'deplacement bouton en rapport a colonne choisie
    With .DrawingObjects(1)
        .Top = Cells(1, col).Top
        .Left = Cells(1, col).Left
    End With
End With

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

2. Code feuille Rubrique : remplacez tous les codes dans la feuille Rubrique par celui-ci

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
    '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

3. Boutons feuille Formulaire
Attribuez le code Ajout_rubrique à tous les boutons situés à droite dans la feuille Formulaire (sauf probablement les deux boutons du bas)

A chaque fois que vous exécuterez le code Ajout rubrique :

--> le bouton Retour Formulaire dans la feuille Rubrique sera positionné sur la colonne à Modifier. Vous pouvez supprimer le bouton "Retour formulaire" situé à droite dans la feuille Formulaire
--> la cellule sélectionnée sera celle de la colonne concernée par l'ajout. Il vous suffit uniquement d'ajouter l'information dans cette cellule. Vu que vos tableaux sont au format structuré, l'ajout dans la cellule sélectionnée sera automatiquement enregistré dans le tableau structuré.

Faites un test avant de passer au point suivant (il en reste à ce que je vois... )

NB : Vérifiez que vous avez aussi supprimé tous les codes se trouvant dans la feuille Formulaire car je ne pense pas vous l'avoir dit avant.

Re,

1. Code Ajout_Rubrique (j'ai donné ce nom au code).

Placez le code dans le modèle Rubrique que vous avez créé

OK fait.

Pour l'instant, je n'ai pas fait les points 2 et 3.

En exécutant cette macro ligne par ligne, message erreur:

metier = Sheets("FORMULAIRE").Shapes(Application.Caller).DrawingObject.Caption

Erreur d'exécution '-2147352571(80020005)':

L'élément portant ce nom est introuvable.

Ca, c'est une chose.

Je passe à la deuxième opération à effectuer:

2. Code feuille Rubrique : remplacez tous les codes dans la feuille Rubrique par celui-ci

Là, je ne comprend pas l'opération à faire. Dans la feuille rubrique, je n'ai que des tableaux hormis un code: RETOUR FORMULAIRE.

A CE NIVEAU JE N'AI RIEN EFFECTUE.

3. Boutons feuille Formulaire

Attribuez le code Ajout_rubrique à tous les boutons situé à droite dans la feuille Formulaire

Donc en partant de NOM jusqu'à DIVERS 3 il y a 23 boutons "d'entreprise".

J'ai donc attribuer 23 fois Ajout_rubrique à ces 23 boutons.

Est ce correct?

Vous pouvez supprimer le bouton "Retour formulaire" situé à droite dans la feuille Formulaire

Je pense que vous avez voulu dire situé à droite dans la feuille RUBRIQUE.

Si oui, ok pas de problème.

NB : Vérifiez que vous avez aussi supprimé tous les codes se trouvant dans la feuille Formulaire car je ne pense pas vous l'avoir dit avant.

Pour moi vous me l'avez dit pas cette formulation que j'ai effectuée:

- Supprimer tous les modules CREER (de mon coté, j'ai juste renommé CREER_NOM en RUBRIQUE et supprimé tous les modules CREER...)

Est ce bien cela qu'il fallait faire lorsque vous dites: NB : Vérifiez que vous avez aussi supprimé tous les codes se trouvant dans la feuille Formulaire

En revanche lorsque vous dites:

de mon coté, j'ai juste renommé CREER_NOM en RUBRIQUE

Moi dans RUBRIQUE j'ai:

Option Explicit
Sub AJOUT_RUBRIQUE()
Dim metier As String
Dim col As Integer
Dim tb As ListObject

Est ce correct?

En exécutant cette macro ligne par ligne, message erreur:
Erreur d'exécution '-2147352571(80020005)':
L'élément portant ce nom est introuvable.

Oui logique. Vous devez toujours cliquer sur un bouton depuis votre feuille Formulaire, sans quoi vous aurez cette erreur.
Raison pour laquelle je vous ai écrit de lier tous vos boutons à cette macro.


Là, je ne comprend pas l'opération à faire. Dans la feuille rubrique, je n'ai que des tableaux hormis un code: RETOUR FORMULAIRE.

Vous avez un code dans la feuille Rubrique !. Clic droite sur l'onglet Rubrique puis choisir "Visualiser le code"


Donc en partant de NOM jusqu'à DIVERS 3 il y a 23 boutons "d'entreprise".
J'ai donc attribuer 23 fois Ajout_rubrique à ces 23 boutons.

Ok.


Pour moi vous me l'avez dit pas cette formulation que j'ai effectuée:
- Supprimer tous les modules CREER (de mon coté, j'ai juste renommé CREER_NOM en RUBRIQUE et supprimé tous les modules CREER...)
Est ce bien cela qu'il fallait faire lorsque vous dites: NB : Vérifiez que vous avez aussi supprimé tous les codes se trouvant dans la feuille Formulaire
------------------------------

de mon coté, j'ai juste renommé CREER_NOM en RUBRIQUE

Vous mélangez modules et codes là....
Les modules CREER .... sont supprimés.
Ok pour avoir renommé le module CREENOM en RUBRIQUE

Pour les codes dans la feuille formulaire, même chose que précédemment --> clic droite sur l'onglet Formulaire puis choisir "visualiser le code" pour accéder à la feuille dans l'éditeur VBA. Là --> supprimer tout.

Re,

J'ai totalement "merdé" dans le post précedent.

Avec toutes mes excuses et merci pour vos explications qui m'ont permis de "raccrocher les wagons".

Voila, tout est fait.

J'ai modifier les noms des boutons de la feuille FORMULAIRE qui ne correspondaient pas aux noms des tableaux de la feuille RUBRIQUE.

Je peux ajouter, supprimer, même me déplacer dans la feuille RUBRIQUE et si je selectionne une cellule en dehors du tableau modifié, le bouton RETOUR FORMULAIRE réapparait "par enchantement".

C'est tout simplement GÉNIAL.

MERCI BEAUCOUP.

Bonne réception.


OK.

Dans votre feuille Formulaire, vous pouvez supprimer la colonne W. Je ne sais pas si vous l'aviez fait mais on en avait discuté

On peut passer aux boutons suivants si vous voulez :

- Visualisation Ligne --> expliquez moi le but
- Suppression ligne

Re

- Visualisation Ligne --> expliquez moi le but

Au lieu de visualiser une ligne horizontalement, j'ai fait un récapitulatif (sans aucune inter action) simplement pour voir les données rentrées concernant cette facture. Cela me donne uniquement un récapitulatif vertical.

Si je m'apercois d'une erreur, je ressort et je vais dans MODIFICATION LIGNE ENTREPRISE.

Pour moi, c'est plus facile qu'une lecture verticale.

- Suppression ligne

Dans ce cas, j'ai prévu la possibilité de supprimer une ligne.

Je vois tout de suite votre question:

POURQUOI SUPPRIMER LA TOTALITÉ d'une ligne alors que vous pouvez la modifier.

Oui mais ca c'est moi.

J'ai prévu de supprimer une ligne.

Mon Dieu mon Dieu. Pardonnez moi.

MDR de votre réaction.

Bonne réception.

Bonjour

Si je m'apercois d'une erreur, je ressort et je vais dans MODIFICATION LIGNE ENTREPRISE.

C'est un peu compliqué.
Pourquoi ne pas ajouter un bouton Modification sur votre feuille Formulaire ?
Une fois que vous visualiser la ligne et que vous voulez la modifier, vous feriez un clic sur ce bouton Modification
Ce bouton serait lié au code Sub Modification_ligne_entreprise()

Dans ce cas, j'ai prévu la possibilité de supprimer une ligne.

Là je n'ai pas compris. Vous visualiser la ligne puis vous la supprimez ?

Si je reprends les deux cas, vous visualiser une ligne puis vous décidez de modifier ou supprimer ?

Bonjour Dan,

Dans ce cas, j'ai prévu la possibilité de supprimer une ligne.

J'ai mis dans ce cas, c'est pour le bouton SUPPRESSION LIGNE ENTREPRISE.

Vous visualiser la ligne puis vous la supprimez ?

Non, pas exactement; Je ne la visualise pas. Je la sélectionne, je demande confirmation que c'est bien cette ligne là qu'il faut supprimer et en cas d'accord, je la supprime.

Je me laisse cette oportunité.

C'est un peu compliqué. (concernant la VISUALISATION LIGNE ENTREPRISE).

OK.

Exact.

Ce qui peut être fait c'est sur le bouton de la feuille ACCUEIL sur le bouton jaune MODIFICATION LIGNE ENTREPRISE,

Rajouter au descriptif de ce bouton:

MODIFICATION OU VISUALISATION LIGNE ENTREPRISE.

Dans la feuille formulaire ce serait toujours le bouton NOIR qui remplirait sa fonction, qu'il y ait modification ou pas.

De cette façon le bouton bleu VISUALISATION LIGNE ENTREPRISE , n'a plus lieu d'être.

Bonne réception.

Ce qui peut être fait c'est sur le bouton de la feuille ACCUEIL sur le bouton jaune MODIFICATION LIGNE ENTREPRISE,
Rajouter au descriptif de ce bouton: MODIFICATION OU VISUALISATION LIGNE ENTREPRISE.

Ok pour ce point. J'ai modifié le fichier

J'ai mis dans ce cas, c'est pour le bouton SUPPRESSION LIGNE ENTREPRISE.....
Non, pas exactement; Je ne la visualise pas. Je la sélectionne, je demande confirmation que c'est bien cette ligne là qu'il faut supprimer et en cas d'accord, je la supprime.

Actuellement le bouton est lié à un code Recapitulatif client. Donc là on supprime le lien.
Je propose ceci :
- Vous sélectionnez la cellule de la ligne en colonne A que vous voulez supprimer
- Vous cliquez sur le bouton Supprimer Ligne entreprise
- Le code vous demande si c'est bien la ligne à supprimer
- SI vous confirmez le code supprime la ligne. cette suppression fait en sorte que le num enreg disparaitra pour l'avenir

Par rapport à cette suppression ne faudrait-il pas conserver ces données supprimées dans une feuille. Utile ou pas ?

Re,

Je propose ceci :

OK.

Par rapport à cette suppression ne faudrait-il pas conserver ces données supprimées dans une feuille.

Merci pour cette proposition, mais NON. Dans mon dossier, je fais deux fois la demande de confirmation de suppression, et

pour moi, je n'ai aucune utilité de conserver une trace de cette suppression.

Bonne réception

Re,

Je propose ceci :

OK.

Par rapport à cette suppression ne faudrait-il pas conserver ces données supprimées dans une feuille.

Merci pour cette proposition, mais NON. Dans mon dossier, je fais deux fois la demande de confirmation de suppression, et

pour moi, je n'ai aucune utilité de conserver une trace de cette suppression.

Bonne réception

Pour la suppression, vous pouvez remplacer votre code Suppression client par celui-ci

Sub SUPPRIMER_UN_CLIENT()
Dim code As Integer
Dim lig As Integer

With Sheets("ACCUEIL").ListObjects(1)
    If Not Intersect(ActiveCell, .DataBodyRange) Is Nothing Then

        lig = ActiveCell.Row - .HeaderRowRange.Row
        code = .DataBodyRange(lig, 1)

        If MsgBox("Voulez-vous supprimer l'entreprise " & vbCrLf & _
            .DataBodyRange(lig, 3) & " - Num enregistrement " & code, vbYesNo + vbDefaultButton2 + vbCritical, "SUPPRESSION CLIENT") = vbYes Then
            .ListRows(lig).Range.Delete
        End If

    End If
End With
End Sub

Faites un test.

je n'ai aucune utilité de conserver une trace de cette suppression.

Ok.


Après on peut passer au bouton Classement si vous m'expliquez la fonctionnalité.

Rechercher des sujets similaires à "mettre ligne tableau"