Déplacer affichage

Bonjour,

Largement débutant, j'ai réussi avec l'enregistreur de macro à créer un bouton qui le permet de copier une ligne et de la coller dans un tableau et faire un tri A-Z sur la colonne des dates.

Ce que j'aimerai faire à présent c'est pouvoir remonter mon affichage sur la ligne que j'ai inséré et classé au bon endroit. Actuellement, je reste au niveau où la ligne a été inséré. A moins de pouvoir l'insérer au bon endroit directement.

Sub Inserer()
'
' Inserer Macro
'
' Touche de raccourci du clavier: Ctrl+w
'
    Rows("1040:1040").Select
    Rows("1040").EntireRow.Insert Shift:=xlDown
    Range("C26:M26").Select
    Selection.Copy
    Range("C1040").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("N1039:P1039").Select
    Selection.Copy
    Range("N1040:P1041").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("O26").Select
    ActiveWorkbook.Worksheets("Compte Bancaire").ListObjects("TableauCB").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Compte Bancaire").ListObjects("TableauCB").Sort. _
        SortFields.Add Key:=Range("TableauCB[[#All],[Date d''éxigibilité]]"), SortOn _
        :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Compte Bancaire").ListObjects("TableauCB").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

C'est le bordel, pour un vrai développeur ça doit piquer les yeux

Merci de votre aide.

Bonjour,

Avec un classeur, on pourra rapidement améliorer ça...

Cordialement.

MFerrand a écrit :

Bonjour,

Avec un classeur, on pourra rapidement améliorer ça...

Cordialement.

C'est à dire un classeur ? peux tu m'en dire plus stp

C'est pas clair !? Tu fournis un classeur avec procédure, contenant des données auxquelles ladite procédure s'applique... !

voici le fameux classeur... la macro se déclenche à partir du bouton "inserer"

12classeur1.xlsm (251.11 Ko)

je c pas si je suis très clair, n’hésite pas à demander si besoin

Cela reste toujours aussi nébuleux... ! L'intérêt de copier une ligne toujours au même endroit me paraît quelque peu limité !

Des explications semblent donc nécessaires sur l'objectif visé, les conditions de déclenchement, sur quels critères l'action sera répétée, etc. Définir quel dispositif est à mettre en place.

MFerrand a écrit :

Cela reste toujours aussi nébuleux... ! L'intérêt de copier une ligne toujours au même endroit me paraît quelque peu limité !

Des explications semblent donc nécessaires sur l'objectif visé, les conditions de déclenchement, sur quels critères l'action sera répétée, etc. Définir quel dispositif est à mettre en place.

L'objectif est simplement d'insérer une ligne au tableau, jusque là c simple. Mais comme j'ai mon prévisionnel jusqu'à la fin de l'année, j'aimerais que ma ligne s'insère au bon endroit par rapport à la date.

Ensuite, j'ai un problème sur les trois dernière colonnes qui se calcul mal lorsque j'insère une nouvelle ligne. C'est pour ça que la ligne est insérée toujours au même endroit pour que je puisse copier/coller les 3 dernières colonnes de n-1 à n+1. Comme ça le calcul des cellules est juste.

Voilà pourquoi tout ce bordel

Un intérêt des tableaux Excel est que les formules s'étendent automatiquement... dans ton cas elles ne se reproduisent que partiellement, ce qui fait que je ne vois plus trop l'avantage de conserver un tel tableau, qui par ailleurs complique l'opération d'insertion...

Je suggèrerais donc volontiers de reconvertir le Tableau Excel en plage normale :

  • recherche ligne d'insertion (si date existe déjà, il faut savoir si on se place avant ou après...)
  • insertion : n étant la ligne d'insertion définie :
        .Range("C26:P26").Copy
        .Range("C" & n & ":P" & n).Insert xlShiftDown

En N, O et P26, on aura rajouté les formules, qui seront donc insérées du même coup.

Il restera toutefois à rectifier celles de la ligne en dessous (les réf. à la ligne précédente ne suivent pas), mais comme le problème se pose déjà...

J'arrive pas à faire fonctionner ton code.

Pour mon code, le seul problème est que mon affichage écran reste au niveau de l'insertion de la nouvelle ligne en 1040.

J'aimerai sélectionner la ligne dont la date est la plus proche de la date d'aujourd'hui par exemple, ça me ferai remonter mon affichage.

Saurais-tu comment faire ?

Bonjour,

Je n'ai proposé aucun code applicable à ton fichier .

J'ai indiqué 2 lignes de codes susceptibles de faire partie d'une proposition, mais dont il est bien spécifié que (complétées avant et après, cela va de soi) elles ne fonctionneront pas dans ton fichier actuel...

Je t'invite à relire la suggestion dans laquelle ces deux lignes sont susceptibles de s'intégrer à une proposition fonctionnelle.

[Je ne chercherai pas à faire fonctionner ton code, qui complique le problème au lieu de le résoudre... et je ne produis jamais de code procédant par sélection, ni reprenant d'autres fragments issus de code enregistré, considérant qu'il s'agit par définition de mauvais code... !]

Cordialement.

J'ai trouvé les lignes de code qui va bien.

    With Worksheets("Feuil1")
        .Activate
        .Columns(1).Find(Date).Select
    End With

ça me permet de sélectionner dans la feuille et la colonne que je veux la date du jour, et ainsi mon affichage se place là où il faut.

Merci quand même.

Ma suggestion ne t'intéresse donc pas ! J'en prends acte...

Bonne soirée.

NB- En tout état de cause, tu m'accorderas de ne pas collaborer à une façon d'écrire du code que je considère totalement inepte !

Rechercher des sujets similaires à "deplacer affichage"