Mettre à la ligne avec ses formes

Bonjour le forum,

J'aimerai créer parfaitement ce petit programme à titre professionnel mais mes compétences sont limité, c'est pour ça que je me rapproche de vous.

Ce petit programme va servir tous les jours et aura plusieurs utilisateurs, c'est la que j'aimerai avoir des codes qui tiennent la route et des fonctionnalités le plus simple possible.

J'ai déjà bien avancé et espère n'avoir pas trop fais de co.......ie (bêtises).

Fonctionnemnt :

  • Remplir toutes les parties en claire, cocher les cases à cocher si les taches (en gras) sont effectuées.
  • Consigne du jour s'affiche si il y en a qui correspond à la date (j'espère que le code est bon) et la dessus il me reste le formulaire a finaliser.
  • La partie main courante, la ou je coince : le but est de renseigner la ligne en jaune et integrer ces info en dessous à la ligne.
le fonctionnement est de cliquer sur "Démarrer", cela affiche en auto l'heure en B20, l'éditeur en N20 qui reprend le nom du CM en D5 et C20 en select.

-on renseigne C20 (cellules fusionnées) , M20 peu être renseigné ou pas (sinon l'heure s'affiche en auto quand on valide).

Jusque la je pense y avoir arrivé (j'aimerai une vérification des codes) et le point ou je bloque c'est avec les cellules fusionnées, oui je sais c'est pas l'idéal mais pas trop le choix.

J'aimerai sur le bouton Valider, inserer les données de la ligne jaune en dessous (ça c'est fais), fusionner les cellules B à L, ajuster la hauteur de la ligne par rapport au texte et y mettre le quadrillage. (et si possible régler la police).

J'espère être le plus claire possible dans mes explications et en attendant merci à vous.

Je joins le fichier pour plus de compréhensions.

Cdlt

pompaero.

17main-courante.xlsm (88.58 Ko)

Bonjour,

Je vous propose ce code :

Private Sub Cmd_Valider_Click()
    'Pour le bouton Nouveau contact, saisissez à la suite :
    'Pour le bouton Nouveau contact
    Dim L As Integer

    If Range("B20") = "" Or Range("C20") = "" Or Range("N20") = "" Then
        MsgBox ("Des informations sont manquantes !!")
        Exit Sub
    End If

    If MsgBox(" Confirmez-vous cet évènement ? ", vbYesNo, " Demande de confirmation d’ajout ") = vbYes Then
        Application.ScreenUpdating = False
        L = Sheets("MC Vierge").Range("B999999").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne vide du tableau
        With Range("B" & L)
            .Value = Format(Range("B20"), "hh:mm")
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Font.Size = 11
        End With

        With Range("C" & L & ":L" & L)
            .Merge
            .Value = Range("C20")
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .WrapText = True
            .Font.Size = 11
        End With

        With Range("M" & L)
            If Range("M20") <> "" Then
                .Value = Format(Range("M20"), "hh:mm")
            Else
                .Value = Format(Time, "hh:mm")
            End If
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Font.Size = 11
        End With

        With Range("N" & L & ":Q" & L)
            .Merge
            .Value = Range("N20")
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Font.Size = 11
        End With

        Rows(L & ":" & L).RowHeight = 33

        [B20:Q20].ClearContents
        Range("B21").Select
    End If
    ActiveWorkbook.Save  'enregistrement fichier
End Sub

Il n'est pas "optimisé" mais il fait une partie de votre demande.

@ bientôt

LouReeD

Bonjour LouReeD

Merci de ta proposition.

Je ne sais ce que tu entend par (n'est pas optimisé), mais après essais celà ressemble énormément à ce que l'on attend comme résultat.

Il y a juste en fin de code, au niveau de Rows(L & ":" & L).RowHeitght = 33 qui met la hauteur en auto à 33, nous aimerions que ce soit flexible et que la ligne se regle par rapport au texte inscrit.

Je cherche de mon côté pour essayé d'arriver à cela.

encore merci.

Cdlt

pompaero.

Bonsoir

Peut-être cela ??

Rows(L & ":" & L).Cells.EntireRow.AutoFit

Bye

Bonsoir Patty5046

Merci de ta solution mais après test cela n'a pas l'air de fonctionner.

J'avais tester juste avnat de mon côté

Rows(L & ":" & L).RowHeight.EntireRow.AutoFit

na marche pas non plus..... je continu de chercher.

Cdlt

Re

Bizarre , je l'ai testé , cela marche chez moi (excel 2016)

Bon courage et bonne soirée

Bonsoir @ vous deux !

En effet, je n'ai pas proposé le autofit car sur mon poste cela ne marchait pas...

Pour contourner j'ai volontairement mis d'office une hauteur de 33...

Il est vrai que c'est grand pour les lignes qui n'en n'ont pas besoin !

J'ai testé le code sous Excel 2010...

Je dis "pas optimisé" car pour ceci :

            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous

Il y a peut-être une manière de coder plus simple du style :

            .Borders.LineStyle = xlContinuous

Qui prend en compte que les bordures de la cellule, mais surtout toutes les bordures... Je ne sais s'il y a l'équivalent, et ceci je ne l'ai point testé !

@ bientôt

LouReeD

Bonjour Patty5046

Ah oui chez toi ça fonctionne !!! bizarre j'ai beau essayer réessayer rien chez moi.

Cdlt

pompaero

Bonjour Loureed

Ok, c'est pas le plus important du moment que cela fonctionne correctement et sans bug surtout.

Cdlt

pompaero

Je n'ai plus que ce petit soucis de mise à la ligne à régler et je devrais être au bout de cette mise page. j'espère pouvoir touver une solution.

Cdlt

Bonjour pompaero

Peux-tu renvoyer ton fichier ??

Tu es en Excel 2016 aussi , donc je ne comprends pas le fait que cela ne marche pas

A+

Bonjour,

pourquoi ceci ne marche pas : .WrapText = True

Il faut peut être y adjoindre autre chose...

@ bientôt

LouReeD

Re à vous

Oui je suis en excel 2016, c'est pour cela que je ne comprends pas..

Fichier en PJ

15main-courante.xlsm (123.57 Ko)

Re

Je ne vois pas ce qui ne marche pas :

  • pas d'erreur signalée
  • la hauteur de ligne est suffisante pour le contenu avec autofit

Donc où est le problème ? Dans quelles conditions le rencontre-tu??

A+

Le soucis est des lors que l'on ecrit un texte long en C20 (il se met bien à la ligne) et des lors que l'on Valide les colonne C à L ne se mettent pas à la ligne (chez moi).

Re

Donc ce n'est pas tout à fait une histoire d'autofit

Je regarde

A+

RE

Perso, je ne trouve pas de solution, je laisse cela aux plus forts.

En effet tu peux taper un texte long en ligne 20, car cellule fusionnée et report à la ligne

Mais à partir de la ligne 23, le report ligne ne suffit pas et tu ne peux pas fusionner tes cellules...

Je donne ma langue au chat....

Bonne soirée tout de même

Merci d'essayer le fichier joint :

15essai-loureed.xlsm (20.44 Ko)

la mie à la ligne fonctionne chez moi, mais toujours pas l'autofit

@ bientôt

LouReeD

Bonjour loureed , bonjour à tous

Cela fonctionne parce que tu mets la ligne à 33 systématiquement.

Si le champ que tu rentres en ligne 20 fait 3 lignes, le problème restera le même , nous ne voyons pas la fin!!!

Bonne journée

A+

Bonjour,

Le fichier était pour "répondre" à ceci :

Le soucis est des lors que l'on écrit un texte long en C20 (il se met bien à la ligne) et des lors que l'on Valide les colonne C à L ne se mettent pas à la ligne (chez moi).

A priori chez lui cela ne va même pas à la ligne....

@ bientôt

LouReeD

Rechercher des sujets similaires à "mettre ligne formes"