Find methode pour les noms de cellules..

Maxoverfred

XLDnaute Occasionnel
Bonjour voici mon problème, je suis en train de comparer les champs sur mon form et sur ma feuille(qui va me servir de print), le form va charger dans un premier temps la feuille et permettre l'impression des données selon un autre format que sur le form...

J'aimerais donc par exemple: j'ai un textbox qui s'appele 'Txt_toto', je vais regarder si je le retrouve bien dans ma feuille (Sheet1) et si oui, le remplir avec les données selon la procédure suivante:

J'ai essayé avec vfind=worksheets('Print').Names.item('Txt_toto') mais je ne sais pas comment je dois continuer mon test étant donné que si je définis la valeur comme string, il se plante.

For Each ctrl In usrinput.Controls
vfind= ???
If IsNull(vfind) Or vfind = '' Then
Else
ThisWorkbook.Worksheets('Print').Range(ctrl.Name) = ctrl.Value
End If
End If
Next

Quelqu'un a une idée?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour MaxoVerd, le Forum

J'ai souvent utilisé cette méthode de nommer les Ranges avec des Noms de Controls de Mon UserForm... On ne s'enquiquine pas la vie comme ça ;)

Moi je vais au plus simple directement comme ceci :

Option Explicit

Private Sub CommandButton1_Click()
Dim CTRL As Control
   
For Each CTRL In UserForm1.Controls
       
On Error Resume Next
            Range(CTRL.Name) = CTRL.Value
   
Next
End Sub


Bon Aprèm
[ol]@+Thierry[/ol]
 

2passage

XLDnaute Impliqué
Bonjour,

En règle générale, je crois que pour item(x), le x est un index. Donc pour ton cas c'est plutot item(1).Name la structure

Sinon, WOOOUAOOOW thierry.. j'y avais jamais pensé... c'est vrai que ca va simplifier la vie, merci !

a+
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour 2Passage, re Maxo, le Forum

Heureux de vous avoir rendu service....

Et puis... avant qu'on me le demande... voici le moyen de faire l'inverse, c'est à dire pour envoyer des Cellules vers les Controls :

Deux méthodes cousines

Private Sub UserForm_Initialize()
Dim NOM As Name

For Each NOM In ThisWorkbook.Names
     
On Error Resume Next
        Me.Controls(NOM.Name) = Range(NOM.Name)
   
Next
   
End Sub


Private Sub UserForm_Initialize()
Dim NOM As Names
Dim i As Byte

Set NOM = ThisWorkbook.Names
   
For i = 1 To NOM.Count
     
On Error Resume Next
        Me.Controls(NOM(i).Name) = Range(NOM(i).Name)
   
Next

End Sub

Bon Aprèm
[ol]@+Thierry[/ol]
 

Discussions similaires

Statistiques des forums

Discussions
312 337
Messages
2 087 395
Membres
103 534
dernier inscrit
Kalamymustapha