Faire apparaitre un tableau structuré sur une pop up ?

Bonjour à tous,

Est-il possible d'afficher un tableau structuré dans une pop up ?

Imaginons par exemple un bouton "afficher tableau..." , en cliquant dessus le tableau s'affiche, puis un "fermer" refermerait la pop up.

En vous remerciant par avance pour vos suggestions

Bonjour,

Je ne sais pas trop mais j'ai eu deux idées pour le faire:

  • Une liste déroulante, à ma connaissance on ne peut pas mettre de bordure...
  • Plein de Label qui représentent chacun une cellule, couleur de fond, bordure... ça me semble faisable mais limité.

Je te joins un essai:

Peut-être que c'est possible avec une image ou autre chose mais voilà ce que j'ai en-tête

Bonsoir,
Ausecour bonsoir,

Je vous propose ceci :

Private Sub UserForm_Initialize()
    Dim Largeur, Hauteur
    ' on stoppe la mise à jour de l'écran
    Application.ScreenUpdating = False
    ' avec la feuille Excel
    With Feuil1
        ' on nomme le USF comme le tableau
        Me.Caption = .ListObjects(1).Name
        ' calcul de la largeur du tableau
        Largeur = .ListObjects(1).Range.Width
        ' hauteur du tableau
        Hauteur = .ListObjects(1).DataBodyRange.Height
        ' suppression de l'objet image de la feuille
        On Error Resume Next
            .Shapes("Choix").Delete
        On Error GoTo 0
        ' on copy le tableau complet
        .ListObjects(1).Range.Copy
        ' on crée un objet image sur la feuille
        .Pictures.Paste.Name = "Choix"
        ' on supprime la sélection de copie
        Application.CutCopyMode = False
        ' on attribue à S le shape image de la feuille
        Set S = .Shapes("Choix")
        ' partie du code qui enregistre l'image de l'objet image de la feuille sur le disque au format JPG
        S.CopyPicture xlScreen, xlBitmap
        With S.Parent.ChartObjects.Add(0, 0, S.Width, S.Height).Chart
            While .Shapes.Count = 0
                DoEvents
                .Paste
            Wend
            .Export "Monimage.jpg", "Jpg"
            .Parent.Delete
        End With
        ' on définit le type d'image de l'objet image du USF
        Me.Image1.PictureSizeMode = 0
        ' largeur du tableau
        Me.Image1.Width = Largeur
        ' hauteur du tableau
        Me.Image1.Height = Hauteur + .ListObjects(1).HeaderRowRange.Height
        ' largeur du USF + 50
        Me.Width = Largeur + 50
        ' hauteur du USF + hauteur de la barre du USF
        Me.Height = Hauteur + 60
        ' centrage de l'objet image
        Me.Image1.Left = 25
        Me.Image1.Top = 0
        ' chargement de l'image
        Me.Image1.Picture = LoadPicture("Monimage.jpg")
        ' suppression de l'image du disque
        Kill "Monimage.jpg"
        ' suppression de l'objet image de la feuille
        On Error Resume Next
            .Shapes("Choix").Delete
        On Error GoTo 0
    End With
End Sub

Le code permet d'afficher un tableau structuré dans un USF, ce code s'adapte à la taille "évolutive" du Tableau, seul le "scroll" en cas de nombreuses lignes n'est pas géré, tout comme les tests de largeur maxi par rapport à l'écran.

Le fichier correspondant :

44popup.xlsm (23.81 Ko)

Le code est commenté, mais si vous avez des questions...

@ bientôt

LouReeD

Bonjour LouReeD,

Waouh, il y a des choses que je n'avais encore jamais vu, je ne savais même pas qu'on pouvait faire ça, j'avais pensé à l'idée de l'image mais je n'avais aucune idée de comment faire!

Le travail est quasiment déjà tout fait avec ça, pour le défilement après ce n'est pas très compliqué à gérer je pense

Bonjour,

voilà qui est fait :

20popup.xlsm (26.59 Ko)

Mais à la différence de votre idée de "zone de texte" ou "label" ici ce n'est qu'une consultation, avec votre système on pourrait faire des modifications de valeur...

@ bientôt

LouReeD

Bonjour à tous,

Désolé pour mon retard, je suis bien occupé ces derniers temps

Tout d'abord merci Ausecour d'être venu à mon secours en premier mais j'avoue que la proposition de LouReeD correspond exactement à ce que j'avais imaginé. Par contre... impossible pour moi de créer le code seul, je vais essayé de me l'approprié. Et d'ailleurs, merci pour les commentaires !

Bon sang, pourquoi Excel ne permet pas de faire ça directement... !

Bravo et un grand merci.

Je vais étudier ça de plus près !

A bientôt

Bonsoir,

merci pour vos remerciements ! N'hésitez pas si vous avez besoin d'explications, mais sur cette partie du code :

        ' partie du code qui enregistre l'image de l'objet image de la feuille sur le disque au format JPG
        S.CopyPicture xlScreen, xlBitmap
        With S.Parent.ChartObjects.Add(0, 0, S.Width, S.Height).Chart
            While .Shapes.Count = 0
                DoEvents
                .Paste
            Wend
            .Export "Monimage.jpg", "Jpg"
            .Parent.Delete
        End With

je ne pourrais pas trop vous expliquer ce qu'il se passe exactement !

Je l'ai "trouvé" sur le net lors d'une recherche pour une de mes applications (ou plutôt une évolution d'une de mes applications) mais celle-ci reste dans le cartons avec toutes les autres qui prennent du retard !

@ bientôt

LouReeD

bonjour,

il y a un outil "camera" qui fait ça et c'est vraiment facile à utiliser et c'est en "RealTime", donc si on change quelque chose dans la plage, ça change aussi immédiatement dans le camera. Avec une 2ième macro, on cache ce popup

18popup.xlsm (46.53 Ko)

Bonsoir BsAlv,

c'est pas faux mais c'est "cloisonné", non ? Ou bien il faut du code supplémentaire, avec un UserForm.Show 0, avec le USF on peut naviguer sur différente feuille pour comparer ou avoir sous "le nez" des données utiles sur une autre feuille...

10popup.xlsm (24.40 Ko)

@ bientôt

LouReeD

bonjour LouReed, le fil,

L'userform, c'est comme prendre un photo, imprimer le résultat et le coller comme un post-it. C'est démodé.

Le camera, c"est un livestream, on voit directement les changements. Si vous voulez naviguer, no problem (sauf les dimensions peut-être). Si vous voulez changer tout les 10 secondes le point de vue, comme dans un système d'un caméra de sécurité, quelque lignes de programmation ... .

Le caméra, c'est un shape, un object qu'on peut facilement déplacer, cacher, etc, pour simuler le status "modeless" de l'userform.

Je vous envoie un fichier vers 10h ...

Bonjour,

Je sais c'est démodé, dépassé, asbeen, mais que voulez vous je suis resté en 2014 année de mon inscription ! Alors...

@ bientôt

LouReeD

Bonjour JB_, Le Fil,

Bon sang, pourquoi Excel ne permet pas de faire ça directement... !

Il le fait depuis longtemps... la preuve ci-dessous.

00ecran1

Ces données du tableau sont bien sur fictives. Toute modification ou insertion (ligne/colonne) sur l'une des fenêtres se répercutera sur l'autre.

Par touches CTRL + Tab on passe de l'une à l'autre.

On peut aussi préférer comme cela.

00ecran2

Donc, faire Affichage puis Fenêtre, choisir Côte à Côte. Excel va automatiquement créer une autre fenêtre, mais par défaut à l'horizontale.

Par le même sous-menu cliquer sur Réorganiser tout. Puis cocher Vertical. Disposer, réduire les fenêtres comme bon vous semble.

A propos je ne trouve pas les USF démodés, vu que la caméra date quand même des Frères LUMIERE.

"A propos je ne trouve pas les USF démodés, vu que la caméra date quand même des Frères LUMIERE".

Bon, si pouvez réaliser ceci avec des userforms, je suis preneur. Ce caméra est peut-être ancien, mais il faut savoir l'utiliser !!!

Pour votre userform, c'est comme vous prenez un photo, vous le sauvegardez, vous l'importez dans l'UF et effacez le fichier de l'image. Amaai !!!

Avec le camera vous avez un livestream, si vous changez quelque chose dans la plage originale, on le voit immédiatement dans le camera, sans intervention

svp, créer une macro avec votre UF, qui est capable à changer son point de vue avec quelque instructions et qui produit un Livestream.

Jusqu'a ce moment, je dis que l'outil camera est supérieur au userform. Apparamment, on peut pas dire démodé au risque de modération.

15popup-2.xlsb (174.91 Ko)

Re à tous,

Merci X Cellus, je connais, mais cela ne correspond pas à mon besoin.

L'idée de la caméra est bonne. Simplement, le clic sur un bouton permettrait d'afficher l'image, puis le clic sur un autre de refermer l'image. C'est possible pour toi de me donner un exemple BsAlv ? (ton premier fichier fournis fonctionne mais duplique l'image pleins de fois je ne comprends pas pourquoi).

L'afficher dans un USF permettrait d'avoir la petite croix pour quitter au-dessus à droite. Mais cela serait un plus

A nouveau,

svp, créer une macro avec votre UF, qui est capable à changer son point de vue avec quelque instructions et qui produit un Livestream.

Voilà, avec seulement deux courtes lignes de code. Un USF c'est pas démodé.

mais il faut savoir l'utiliser !!!

bonjour le fil,

13popup-2.xlsb (172.10 Ko)

le camera se montre avec un bouton (ou une autre méthode) et si on clicque sur l'image, il se cache.

@X Cellus, vous changez de sujet, on veut simplement voir une plage ou un tableau structuré.

Et bien dîtes moi...

@ bientôt

LouReeD

Bonjour à tous,

Je vous remercie pour votre implication !

BsAlv, le rendu est pile poil ce que je veux, mais tout comme la proposition de LouReed, le code VBA est un peu compliqué pour moi.

J'ai cherché sur le net pour voir s'il y avait des choses plus simple à mettre en place avec l'appareil photo via VBA mais j'ai rien trouvé !

Donc... il ne me reste plus qu'à comprendre ce charabia !

Merci à vous, je passe en résolu

bonjour,

j'ai ajouté de la commentaire à côté et supprimé les macros inutiles. De cette manière cela sera plus compréhensible.

15popup-2.xlsb (176.81 Ko)
Public c1 As Range, c2 As Range     'les 2 plages qu'on passe d'une macro à l'autre

Sub M_Camera_Show()     '=montrer le camera
     Set sh = Sheets("Feuil2")     'la forme du camera est dans cette feuille
     If ActiveSheet.Name <> sh.Name Then Application.GoTo sh.Range("A1")     'activez cette feuille, si ce n'était pas le cas
     Set ac = ActiveCell     'mémorisez la cellule active
     Set c1 = sh.Range("c5")     'choississez la cellule en haut à gauche pour le camera
     Set c2 = Sheets("Feuil1").Range("A1:F15")     'choississez la plage que vous voulez voir dans le camera
     M_Camera     'exécutez cette macro
     ac.Select     'sélectionnez la cellule active originale
End Sub

Sub M_Camera_Hide()  '=cacher le camera
     Sheets("feuil2").Shapes("MonCamera").Visible = False
End Sub

Private Sub M_Camera()
     Dim Shp   As Shape

     Set sh = c1.Parent     ' la feuille où vous voulez voir ce  camera

     '********* tester l'existance de la forme "MonCamera" *********************
     On Error Resume Next     'continuez en cas d'ereur
     Set Shp = sh.Shapes("MonCamera")     'affectez la forme nommée "MonCamera" (s'elle existe) à Shp
     If Shp Is Nothing Then     's'elle n'existait pas
          c2.Copy     'copier la plage de source
          sh.Shapes.AddShape msoShapeRectangle, c1.Left, c1.Top, 100, 100     'ajouter une nouvelle forme rectangle à la cellule c1 avec hauteur et largeur 100*100
          sh.Shapes(sh.Shapes.Count).Name = "MonCamera"     'nommez cette forme "MonCamera"
     End If
     On Error GoTo 0     'fin de continuation en cas d'erreur

     '********************** renouveller poistion et contenu de la forme  "MonCamera" **********
     With ActiveSheet.Shapes.Range(Array("MonCamera"))  'maintenant la forme "MonCamera" existe, avec cette forme ...
          .Visible = True     'montrez-la
          .Left = c1.Left     'position gauche
          .Top = c1.Top     'position haut
          .Select     'sélectionnez la forme
          Selection.Formula = "=" & c2.Parent.Name & "!" & c2.Address     'affectez la plage que vous voulez voir
     End With
End Sub

Au top !

Merci

Rechercher des sujets similaires à "apparaitre tableau structure pop"