Problème : ligne qui change de hauteur à l'exécution d'une macro

tacite56

XLDnaute Nouveau
Bonjour,

Je suis un débutant, autant sur Excel qu'en VBA. Mais, grâce à quelques bon tuto sur le net et une nuit blanche, j'ai réussi à me créer une petite base de donnée gérant ma vidéothèque. Cependant, des erreurs demeurent et je ne suis pas suffisamment bon en VBA pour les identifier et les corriger... Par exemple, lorsque je créer un nouveau film, la ligne 2 du tableau principal ('liste films') s'allonge démesurément en hauteur pour accueillir le nouveau film. Je sais que ce n'est pas grand chose, mais je ne sais pas comment y remédier et c'est assez énervant:).

Je me doute que le code de la macro 'nouveau' est un peu fourre tout et mal agencée, mais mes connaissances actuelles ne me permettent pas de le simplifier.

Merci d'avance pour votre aide !
 

Pièces jointes

  • Liste films essai_4.xlsm
    25.5 KB · Affichages: 70

JNP

XLDnaute Barbatruc
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Bonjour Tacite56 et bienvenue :),
Ta macro un peu amaigrie et corrigée :p...
Code:
Sub Nouveau()
With Sheets("Liste films")
    .Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    .Range("A2:J2").Value = Sheets("Nouveau").Range("A2:J2").Value
End With
Sheets("Nouveau").Range("C8:C10,C12:C14,F8,F12:F13").ClearContents
Range("C8").Select
End Sub
Bonne suite :cool:
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Bonjour Tacite, et bienvenue sur le forum
Par exemple, lorsque je créer un nouveau film, la ligne 2 du tableau principal ('liste films') s'allonge démesurément en hauteur pour accueillir le nouveau film.
contrairement à ce que tu crois, cette nouvelle ligne créée ne s'allonge pas en hauteur, elle prend le format de la ligne qui précède (la ligne 1)
pour y remédier, j'ai caché la ligne 2 (elle est entièrement vide) et c'est maintenant la ligne3 qui prend les nouvelles entrées (après insertion d'une nouvelle ligne)

j'ai fait une petite modif du code pour cela

ton fichier en retour

à+
Philippe

Edit: Bonjour la neige et les Vosges
 

Pièces jointes

  • 111.xlsm
    24.4 KB · Affichages: 71
  • 111.xlsm
    24.4 KB · Affichages: 77
  • 111.xlsm
    24.4 KB · Affichages: 78
G

Guest

Guest
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Bonjour,

Une autre proposition. Comme tu as créé un tableau (au sens excel par insertion/tableau) nommé 'Tableau1' j'utilise cet objet pour créer la nouvelle ligne et y mettre les valeurs:

Code:
Sub Nouveau()
    Dim lR As Range
    Dim Num As Long
    Set lR = Sheets("Liste films").ListObjects("Tableau1").ListRows.Add(1).Range
     'On Travaille à partir de la feuille Nouveau [Les '.range(...)' se rapportent au With qui précède donc la feuille
    With Sheets("Nouveau")
        lR(1, 2) = .Range("C8")
        lR(1, 3) = .Range("C9")
        lR(1, 4) = .Range("C10")
        lR(1, 5) = .Range("F8")
        lR(1, 6) = .Range("C12")
        lR(1, 7) = .Range("C13")
        lR(1, 8) = .Range("C14")
        lR(1, 9) = .Range("F12")
        lR(1, 10) = .Range("F13")
        'Nettoyage des cellules de 'nouveau'
        .Range("C8:C10,C12:C14,F8,F12:F13").ClearContents
        'Calcul du numéro
        lR(1, 1) = Application.Max(Sheets("Liste films").Range("Tableau1[N°]")) + 1
    End With
End Sub

A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Re, bonjour Hasco,

ou bien plus simple, il suffit d'ajouter la ligne:

Rows("2:2").EntireRow.AutoFit

comme ceci: (dans ton fichier d'origine)
Code:
Sub Nouveau()
'
' Nouveau Macro
'

'
    Sheets("Liste films").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Rows("2:2").EntireRow.AutoFit

à+
Philippe
 

tacite56

XLDnaute Nouveau
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Vous êtes super gentils, maintenant ça marche !! C'est beau internet !:D

Pendant que j'y suis, et parce que l'appétit vient en mangeant, j'aimerais faire une chose plus complexe dont je n'ai pas le moindre début d'un commencement d'idée...

Je souhaiterai pouvoir rechercher de façon assez intuitive des films selon leur durée. Par exemple, ne rechercher que les films de moins de 90 minutes. J'imagine (mais ça risque d'être complexe je suppose) une petite liste déroulante avec une sélection de durées. Par exemple : - 140 min. ; -120 ; -90 ... De manière à ce que, si je sélectionne -90, ne s'affichent que les films de moins de 90 min.

Peut-être suis-je un peu ambitieux, parce que je suis à des années lumières de pouvoir réaliser un truc pareil ; mais si quelqu'un peut me mettre sur la piste, je ne dis pas non !

Et merci encore pour votre aide, c'est un réel plaisir que de fréquenter ce forum !
 
G

Guest

Guest
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Bonjour,

Pourquoi ne pas tout simplement utiliser les filtres numériques. En cliquant sur la petite flèche dans la cellule 'Durée' tu as un menu qui apparaît avec 'Filtre numériques' et tout un tas d'option dans ce menu.

A+

Bonjour Philippe:D, JNP:D
 
Dernière modification par un modérateur:

tacite56

XLDnaute Nouveau
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Oui, à la réflexion, tu as raison ! je souhaitais quelque chose d'encore plus intuitif, mais ce serais vraiment se compliquer la vie alors que les outils existent déjà et sont suffisamment performants ! Désolé donc pour mon dernier post, ma réflexion n'était pas assez aboutie !


A + !
 

tacite56

XLDnaute Nouveau
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Pour Hasco : Oui, à la réflexion, tu as raison ! je souhaitais quelque chose d'encore plus intuitif, mais ce serais vraiment se compliquer la vie alors que les outils existent déjà et sont suffisamment performants ! Désolé donc pour mon dernier post, ma réflexion n'était pas assez aboutie !


A + !
 

JNP

XLDnaute Barbatruc
Re : Problème : ligne qui change de hauteur à l'exécution d'une macro

Re :),
@JNPeffectivement c'est plus simple ....... mais je ne connaissais pas
Moi non plus :p...
J'ai esssayé de l'obtenir par Henry Gistreur, mais que dalle :eek:...
Alors j'ai saisi : xlFormatFromLeftOrAbove dans l'aide, et là, il m'a proposé : Énumération XlInsertFormatOrigin...
Et c'est là que j'ai trouvé la bonne valeur (je voyais pas pourquoi il y avait un : CopyOrigin:= s'il n'y avait qu'une possibilité :eek:...) ;) !
Bonne soirée (et Saint-Valentin, j'espère que tu n'as pas ceuilli toutes les fleurs de ton jardin, même si elle le mérite :p...)
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 503
Membres
103 236
dernier inscrit
Menni