D
Dany
Guest
Bonjour à toutes et à tous! C encore moi avec mes petits soucis avec VBA...
Alors j'ai une zone de texte de la boite à outils controles, avec 2 labels, un qui definit la taille limite du nombre de caractère autorisé, et une qui compte le nombre de caractère saisi et qui passe en rouge qd le nombre est supérieur a la limite. Jusque là, pas de soucis (fichier en attaché).
La, ou je coince, c'est pour récuperer le texte, saisi dans la zone, dans une variable via une macro d'un module qui se trouve dans un autre fichier excel. Voici le code de ma fonction :
Code:
¤¤ J'appelle ma fonction ainsi :
importTextBox 'compteur', 'TextBox1', 'P1_Contenu'
¤¤ Et voici le code de la fonction :
' gère l'import d'un TextBox via les variables globales fileSource, fileDest, sheetDest
' (et en particulier le problème des 255 caractères)
' sheetSrc : nom du sheet contenant le textbox à importer
' tBoxSrc : nom de l'objet textbox à importer
' cellDest : les références de la cellule destination
Sub importTextBox(sheetSrc, tBoxSrc, titre)
' Dimension the variables.
Dim x As Integer
Dim txtBox1 As TextBox
Dim theText As String
Dim cell As Range
Dim noLigne As Long
' Choix de la bonne variable globale en fonction du contexte
'If concerne_fichier_presentation Then
noLigne = noLigneDestPres
'Else
'noLigne = noLigneDestDomSpe
'End If
' IMPORTER (ou valeur valeur_onglet_absent si la feuille n'existe pas)
If (Not cetOngletExiste(sheetSrc)) Then
Workbooks(fileDest).Sheets(sheetDest).Cells(noLigne, noColDest).Value = valeur_onglet_absent
Else
Workbooks(fileSource).Sheets(sheetSrc).Select
' Set txtBox1 equal to the active sheet's TextBox
' objects. Replace the ordinal number with your TextBox names
' in quotes. For example: ActiveSheet.DrawingObjects('Text 1')
'¤¤ Et voici ici l'endroit ou il faut mettre le code pour récuperer le contenu de la zone de texte mais je ne connais pas la syntaxe et celle ci ne fonctionne pas ...
Set txtBox1 = ActiveSheet.Controls(tBoxSrc)
' Positionner une référence sur la cellule de destination
Set cell = Workbooks(fileDest).Sheets(sheetDest).Cells(noLigne, noColDest)
' Vider la cellule
cell.Value = ''
' Create a For-Next construct that loops until there is no more
' text in txtBox1.
For x = 1 To txtBox1.Characters.Count Step 250
' Place the first text box text into a variable called theText.
theText = txtBox1.Characters(Start:=x, Length:=250).Text
' Add the value of theText variable into second text box.
cell.Value = cell.Value & theText
Next
End If
' Positionner le titre
If maj_titre_actif Then Workbooks(fileDest).Sheets(sheetDest).Cells(1, noColDest).Value = titre
' INCREMENTER le numero de colonne courant
noColDest = noColDest + 1
End Sub
Alors j'ai une zone de texte de la boite à outils controles, avec 2 labels, un qui definit la taille limite du nombre de caractère autorisé, et une qui compte le nombre de caractère saisi et qui passe en rouge qd le nombre est supérieur a la limite. Jusque là, pas de soucis (fichier en attaché).
La, ou je coince, c'est pour récuperer le texte, saisi dans la zone, dans une variable via une macro d'un module qui se trouve dans un autre fichier excel. Voici le code de ma fonction :
Code:
¤¤ J'appelle ma fonction ainsi :
importTextBox 'compteur', 'TextBox1', 'P1_Contenu'
¤¤ Et voici le code de la fonction :
' gère l'import d'un TextBox via les variables globales fileSource, fileDest, sheetDest
' (et en particulier le problème des 255 caractères)
' sheetSrc : nom du sheet contenant le textbox à importer
' tBoxSrc : nom de l'objet textbox à importer
' cellDest : les références de la cellule destination
Sub importTextBox(sheetSrc, tBoxSrc, titre)
' Dimension the variables.
Dim x As Integer
Dim txtBox1 As TextBox
Dim theText As String
Dim cell As Range
Dim noLigne As Long
' Choix de la bonne variable globale en fonction du contexte
'If concerne_fichier_presentation Then
noLigne = noLigneDestPres
'Else
'noLigne = noLigneDestDomSpe
'End If
' IMPORTER (ou valeur valeur_onglet_absent si la feuille n'existe pas)
If (Not cetOngletExiste(sheetSrc)) Then
Workbooks(fileDest).Sheets(sheetDest).Cells(noLigne, noColDest).Value = valeur_onglet_absent
Else
Workbooks(fileSource).Sheets(sheetSrc).Select
' Set txtBox1 equal to the active sheet's TextBox
' objects. Replace the ordinal number with your TextBox names
' in quotes. For example: ActiveSheet.DrawingObjects('Text 1')
'¤¤ Et voici ici l'endroit ou il faut mettre le code pour récuperer le contenu de la zone de texte mais je ne connais pas la syntaxe et celle ci ne fonctionne pas ...
Set txtBox1 = ActiveSheet.Controls(tBoxSrc)
' Positionner une référence sur la cellule de destination
Set cell = Workbooks(fileDest).Sheets(sheetDest).Cells(noLigne, noColDest)
' Vider la cellule
cell.Value = ''
' Create a For-Next construct that loops until there is no more
' text in txtBox1.
For x = 1 To txtBox1.Characters.Count Step 250
' Place the first text box text into a variable called theText.
theText = txtBox1.Characters(Start:=x, Length:=250).Text
' Add the value of theText variable into second text box.
cell.Value = cell.Value & theText
Next
End If
' Positionner le titre
If maj_titre_actif Then Workbooks(fileDest).Sheets(sheetDest).Cells(1, noColDest).Value = titre
' INCREMENTER le numero de colonne courant
noColDest = noColDest + 1
End Sub