Vérifier si textbox est vide

Bonsoir,

Je vous joins un petit fichier qui contient deux problèmes que j'aimerais voir avec vous si possible :

Ce fichier copie le contenu de la zone de texte dans le commentaire d'une cellule. Comme je n'arrive pas a trouver la syntaxe

pour vérifier si la zone de texte est vide ou non, je vérifie si le commentaire est vide après opération et l’efface si c'est le cas.

Pourtant j'aimerais bien éviter la copie si la zone de texte se trouve vide.

Quand un commentaire se rempli, si autosize est true il prend la forme selon son contenu, mais voilà j'aimerais avoir

une largeur fixe et une hauteur dépendante du contenu. Je pensais que .Shape.TextFrame.AutoSize = True et .Comment.Shape.Width = 350 permettrait de le faire, mais pas du tout. Je me retrouve donc avec des dimensions statiques.

Le fichier sera plus parlant que le code seul :

Sub textboxcopy()

With Range("J3")
    'Set sCom = ActiveCell.Comment
    .AddComment
    .Comment.Shape.TextFrame.AutoSize = True
    .Comment.Shape.Width = 350
    .Comment.Shape.Height = 350
    .Comment.Shape.TextFrame.Characters.Font.Size = 12
End With

ActiveSheet.Shapes("rectangle 1").Select
Range("J3").Comment.Text Text:=Selection.Characters.Text

If Range("J3").Comment.Text <> "" Then

    Else
        Range("J3").Comment.Delete

End If

End Sub

Merci de votre attention

Bonsoir

Pas de solution pour les dimensions du commentaire, mais un emplâtre : Dans ta forme coupe tes lignes

A tester

Sub textboxcopy()
Dim Msg As String

  Msg = ActiveSheet.Shapes("rectangle 1").TextFrame.Characters.Text
  If Len(Msg) > 0 Then
    With Range("J3")
      .ClearComments
      .AddComment
      .Comment.Text Text:=Msg
      .Comment.Shape.TextFrame.AutoSize = True
      '.Comment.Shape.Width = 350
      '.Comment.Shape.Height = 350
      .Comment.Shape.TextFrame.Characters.Font.Size = 12
    End With
  End If
End Sub

Bonsoir Banzai64

C'est super merci

Dim Msg As String

Msg = ActiveSheet.Shapes("rectangle 1").TextFrame.Characters.Text

If Len(Msg) > 0 Then

Pour la taille du commentaire fixe en largeur et variable selon le contenu en hauteur, je commence à penser que vba ne le permet pas

directement avec comment.shape....., mais peut être en limitant le nombre de caractère sur une seule ligne ou encore avec un retour à la ligne dans le commentaire tout les x caractères. Je planche la dessus et je reviens si j'ai trouvé.

Merci beaucoup

Bonjour

C'est ce que je t'ai proposé

Banzai64 a écrit :

Pas de solution pour les dimensions du commentaire, mais un emplâtre : Dans ta forme coupe tes lignes

Le nouveau fichier est joint en bas de ce post :

salut Banzai64, j'avais pas compris, parfois je marche au ralenti...

Et comme j'avais pas capté, pendant ce temps j'ai cherché à avoir quelque chose fonctionnant sur le nombre de caractères :

J'ai appliqué une règle de 3 sur le nombre récupéré de caractères présent dans le rectangle1, ça marche bien sauf quand le nombre de caractères passent en dessous de 59 alors j'ai mit dans ce cas une valeur statique de 20pix

Sub textboxcopy()

Dim Msg As String
Dim A As Integer
Dim B As Integer
'Dim Compteur As ? Difficulté à définir
'Dim Hauteur_Variable As ? Difficulté à définir

  ' Compte le nombre de caractère dans rectangle1
  Compteur = ActiveSheet.Shapes("rectangle 1").TextFrame.Characters.Count
  ' Nombre de caractère lisiblent quand width = 350
  A = 206
  ' Nombre de pix sur l'axe y quand widht = 350
  B = 60
  ' règle de trois pour adapter la hauteur en fonction du nombre de caractères.
  Hauteur_Variable = (Compteur * B) / A
  Msg = ActiveSheet.Shapes("rectangle 1").TextFrame.Characters.Text

  If Len(Msg) > 0 Then
    With Range("J3")
      .ClearComments
      .AddComment
      .Comment.Text Text:=Msg
      .Comment.Shape.Width = 350
      If Compteur > 59 Then
        .Comment.Shape.Height = Hauteur_Variable
      Else
        ' Nombre de pix minimum sur l'axe y quand le nombre de caractère est < ou = 59
        .Comment.Shape.Height = 20
      End If
      .Comment.Shape.TextFrame.Characters.Font.Size = 12
    End With
  End If
End Sub

PS : J'ai remarqué que tu avais rendu le bouton reset obsolète avec un simple .clearComments , parfois je me dis que je fais compliqué quand ca peut être simple.

Le fichier est joint ▼

Pour le nombre de caractères inférieur à 59 dans ce cas si le retour à texteframe autosize fonctionne mieux qu'une valeur.

...
 If Compteur > 59 Then
        .Comment.Shape.Height = Hauteur_Variable
      Else
        .Comment.Shape.TextFrame.AutoSize = True
      End If
...

Bonjour

Ôtes moi d'un doute

Tes messages n'ont qu'un but d'information ou tu demandes des réponses à des questions que je n'ai pas vues ?

Bon réveillon

C'est à titre d'information pour celui qui passera par là après avec le même problème.

Bon réveillon également et encore merci.

Rechercher des sujets similaires à "verifier textbox vide"