IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Bouton (contrôle de formulaire) jamais centrer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut Bouton (contrôle de formulaire) jamais centrer
    Bonjour a vous,


    Après des recherche infructueuses sur le web je m'adresse a vous afin de trouver une solution a mon problème. (oui mon cher Ryu, j'ai fais mes devoirs )


    A l'aide d'un premier bouton (contrôle formulaire) que j'y rattache une macro, je génère des feuilles selon des conditions. Dans ces nouvelles feuilles, j'ajoute un autre bouton (contrôle formulaire) de mon coté tout fonctionne a merveille. Sur deux de mes collègues le bouton n'est pas placé a la même emplacement que moi.


    J'ai donc décidé de fixé des largeur de colonne a l'aide de columns.columnswidth et de centré le bouton a la même emplacement i.e. en milieu d'une des entêtes de colonnes. De mon coté, le bouton est centré mais encore une fois mes 2 collègues, le bouton n'Est toujours pas centrés.


    Donc je veux savoir, ce qui cause ce problèmee et et en second lieu, comment remédier a la situation


    en vous remerciant, cers amis du forum

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Avril 2017
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 122
    Par défaut


    Pas de code, pas de capture, pas assez d'information pour avoir une intuition de quoi répondre.

    Ce n'est surement pas par hasard que personne n'a essayé de répondre depuis près de deux jours.

    il manque principalement :
    la definition des nouveaux formulaires
    la création du dernier bouton et ses paramètrages.

    accessoirement toute les redefinitions de ses propriétés, etc.

    On n'a pas besoin du code lancé par la macro sauf s'il redefinit les propriétés du formulaire, du bouton

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Merci Gfacro de m'avisez des précisions requises.


    Voici une partie du code contenant l'information pertinente (le code des largeurs des colonnes des nouvelles feuilles ainsi celui de la créations du boutons)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Sheets.Add.Name = nom_fournisseur
                        Feuil3.[entete].Copy Sheets(nom_fournisseur.Value).Range("a1")
                        ActiveSheet.Shapes.Range(Array("Button 1")).Delete
     
                         Range("Q1").Copy Range("r1:t1")
                         Range("R1").Value = "Description du fournisseur"
                         Range("S1").Value = "Reponse du fournisseur"
                         Range("T1").Value = "Lien internet ou catalogue du fournisseur"
                         Columns("a:b").ColumnWidth = 6.11
                         Columns("c").ColumnWidth = 8.33
                         Columns("d").ColumnWidth = 15.78
                         Columns("e").ColumnWidth = 11.89
                         Columns("f").ColumnWidth = 15.78
                         Columns("g").ColumnWidth = 40
                         Columns("h:o").ColumnWidth = 15.78
                         Columns("p").ColumnWidth = 11.89
                         Columns("q:t").ColumnWidth = 40
     
     
     
                        ActiveSheet.Buttons.Add(1312.2, 28.2, 59.4, 10.2).Select
                        Selection.OnAction = "sauvegarde_onglet"
                        Selection.Characters.Text = "sauvegarder"
                            With Selection.Characters(start:=1, Length:=11).Font
                                .Name = "Calibri"
                                .FontStyle = "Normal"
                                .Size = 8
                                .Strikethrough = False
                                .Superscript = False
                                .Subscript = False
                                .OutlineFont = False
                                .Shadow = False
                                .Underline = xlUnderlineStyleNone
                                .ColorIndex = 1
                            End With
     
     
                    End If
     
     'on copie les données dans la feuille correspondantes
     
                        Feuil3.Cells(x + 1, [seq].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 1)
                        Feuil3.Cells(x + 1, [pair_impair].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 2)
                        Feuil3.Cells(x + 1, [etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 3)
                        Feuil3.Cells(x + 1, [acronyme_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 4)
                        Feuil3.Cells(x + 1, [item_etab_moulinette].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 5)
                        Feuil3.Cells(x + 1, [item_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 6)
                        Feuil3.Cells(x + 1, [descr_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 7)
                        Feuil3.Cells(x + 1, [couleur_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 8)
                        Feuil3.Cells(x + 1, [fourn_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 9)
                        Feuil3.Cells(x + 1, [fournisseur].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 10)
                        Feuil3.Cells(x + 1, [marque_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 11)
                        Feuil3.Cells(x + 1, [cat_etab].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 12)
                        Feuil3.Cells(x + 1, [format_contrat].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 13)
                        Feuil3.Cells(x + 1, [qte_an].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 14)
                        Feuil3.Cells(x + 1, [prix_contrat].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 15)
                        Feuil3.Cells(x + 1, [valider_x].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 16)
                        Feuil3.Cells(x + 1, [commentaire].Column).Copy Sheets(nom_fournisseur.Value).Cells(x + 1, 17)
     
     
     
    'on supprime les lignes vides si bien sur les feuilles ont été créés
     
                        Sheets(nom_fournisseur.Value).Select
                        Range("A2").EntireRow.Insert
                        Sheets(nom_fournisseur.Value).Range("b1:B" & LastLignUsedInColumn("B")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Voici l'imprime écran de ce que j'obtiens de mon PC (le bouton est centré comme je le désire)


    Nom : Capture1.JPG
Affichages : 810
Taille : 105,6 Ko


    Voici une copie de l'imprime écran reçu de ma collegue (bouton décalé)


    Nom : Capture2.JPG
Affichages : 681
Taille : 54,5 Ko

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Avril 2017
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 122
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Buttons.Add(Activesheet.range("P1").left, Activesheet.range("P1").height / 2, Activesheet.range("P1").width, Activesheet.range("P1").height /2).Select
    Les dimensions données sont en nombre de point, de mémoire même je crois qu'ils sont dans une unité bizarre qu'office calcule, mais disons qu'ils sont en point à l'écran. Je pense que vous n'avez pas la même résolution d'affichage, c'est pour cela que les points n'ont pas la même taille chez vous et chez elle.
    Le bouton est plus à droite chez elle, cela signifie que ses points d'affichage sont plus gros, qu'elle affiche moins de points à l'écran, donc que sa résolution est moindre. ... Si je ne me trompe pas, c'est facile de se tromper sur un truc comme ça.

    Ce que j'ai fait, j'ai remplacé vos points par le nombre de point depuis la gauche de P1, sa hauteur /2 = le bouton commence à la moitié de la cellule en hauteur, la largeur de P1 en points et sa hauteur /2 à nouveau.
    Le bouton commence à hauteur de p1 / 2 et a la taille hauteur / 2 de P1, donc il va faire toute la moitié inférieure de la case P1.


    Il est aussi possible d'utiliser les centimetres avec Application.CentimetersToPoints(tailleEnCm)

    NB : Pour ceux que cela intéresse, c'est un problème de taille d'écran et de nombre de points.
    Pour une même résolution d'écran, vous pouvez avoir des tailles d'écran qui varient beaucoup.
    Nom : Capture.PNG
Affichages : 607
Taille : 5,6 Ko
    Le même nombre de points répartit sur une surface bien plus grande signifie que les points sont plus gros.
    Pour que les cercles restent des cercles, les carrés restent des carrés, les proportions soient respectées, etc, windows est obligé de faire des calculs complexes pour retraiter cela et faire en sorte que l'affichage soit harmonieux.

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Exemple
    Pour centrer le bouton verticalement et horizontalement dans cellule G6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set c = ActiveSheet.Range("g6")
    largeur = c.Width / 5 * 4
    hauteur = c.Height / 3
     
    ActiveSheet.Buttons.Add(c.Left + (c.Width - largeur) / 2, c.Top + (c.Height - hauteur) / 2, largeur, hauteur).Select

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Bonjour a vous, je sens que l'on approche de la solution.


    J'ai ajouté le code de Docmarti et j'ai le résultat suivant :

    Nom : Capture.JPG
Affichages : 723
Taille : 108,9 Ko

    LE début du bouton est centrer dans la cellule voulue (p1) mais je présume qu'elle ne soustrait pas la moitié de la longueur du bouton.

    Le bouton également ne devrais jamais être plus large que la cellule spécifié



    Pour le code de Gfacro,


    Je ne vois malheureusement pas de bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/10/2015, 12h55
  2. [XL-2007] Création d'un bouton (contrôle de formulaire
    Par Gabich21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/02/2015, 15h12
  3. [XL-2007] Création d'un bouton (contrôle de formulaire
    Par Gabich21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/02/2015, 11h57
  4. [XL-2010] VBA : Bouton contrôle de formulaire avec insertion forme et suppression ancienne
    Par anonymous9 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/03/2014, 21h24
  5. [XL-2010] Affichage boutons contrôle de formulaire quand lignes sont groupées
    Par bibenki dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/11/2012, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo