VBA probleme de mise en forme apres validation USerForm

  • Initiateur de la discussion Initiateur de la discussion Bens7
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bens7

XLDnaute Impliqué
Bonjour a tous !
J;ai un userForm (celui dans la pieces jointes n'est pas le final je vous rassure c'est juste pour le forum)
qui me permet d'afficher les client que je doit appeler aujourdhui .
Le probleme c'est que apres la validation (essayer meme sans changer quoi que ce soit) les mises en forme des cellules change et les Formats ne sont pas respecter,
Si vous pouvez me filer un coup de main !
Merci

PS: je sais mettre la mise en forme si ya pas de code le probleme c'est que je sais pas l'integrer au code existant
 

Pièces jointes

Re : VBA probleme de mise en forme apres validation USerForm

Bonsoir,

1) C'est parce que tu as mis un format personnalisé, le contenu est bien 223252525.
Le plus simple est d'utiliser la propriété .text de la cellule qui récupère ce que tu vois :
Code:
      For i = 1 To 28 'Nombre de Collone A POMPER
        Me.Controls("TextBox" & i) = Sheets("ACTIF").Cells(j, i + 1).Text
      Next i

J'avais oublié les autres questions...
2) pour toutes les dates utilises cdate()
... = cdate(TextBox31)

3) trop tard pour comprendre. En plus un recherche de TextBox25 sur le projet ne ramène rien....

eric
 
Dernière édition:
Re : VBA probleme de mise en forme apres validation USerForm

eriiic bonjour alors malheuresement :

1) Effectivement au premier lancement du User ca s'affiche bien comme dans les cellules mais une fois le bouton valider le client suivant s'affiche 223252525 et meme si je met .Text dans le code du bouton en bas :
Code:
      For i = 1 To 28 'Nombre de Collone
        Me.Controls("TextBox" & i) = Sheets("ACTIF").Cells(k, i + 1).Text

      Next i
et bien les cellules on changer completement et sont maintenant en format 022-325 25 25

2) cdate(TextBox31) : c'est pas la Text Box 31 le probleme mais TextBox 18 et 27 et je ne sais pas ou mettre cette commande

3) Bah en fait je veux afficher (dans la TextBox25) (qui corespond a la collonne Z) la formule de la collonne Z

Merci encore
 
Re : VBA probleme de mise en forme apres validation USerForm

Bonjour,

1) quand tu écris dans ces cellules il faut écrire 223252525 puisqu'elles ont le format que tu désires. Utilise replace() pour supprimer les - et les espaces, puis converti en numérique avec cdbl()

2) cdate(TextBox31) : c'est pas la Text Box 31 le probleme mais TextBox 18 et 27
Je t'ai dit pour chaque date. TextBox31 en est une et c'est un exemple...
Si tu dois l'écrire en A1 alors :
[A1]=cdate(TextBox31)

3) toujours rien compris, il n'y a pas de formule dans Z.
Et ta question est-elle toujours d'actualité après application de la proposition faite au 1) ?

Il va falloir faire des efforts de clarté dans tes questions et explications. Chaque mot à une signification bien précise.

eric
 
Re : VBA probleme de mise en forme apres validation USerForm

Ok alors j;explique mon probleme dans l'ordre :

le probleme 1:- lorsque que je creer mon listing j'ecris bien : 223252525 puis propriete > format de cellule > Special > telephone Belgique
donc jusque la tout est ok .
- Je lance mon Userform avec l'option .Text > je clike sur valide > le format dans la cellule n'est plus le meme : 0""##""-###" "##" "## donc dans ma cellule j'ai plus 223252525 mais 022-325 25 25 (essaye le Userform)

Probleme 2
tu me dit :
Si tu dois l'écrire en A1 alors :
[A1]=cdate(TextBox31)
ca je sais faire , le probleme c'est que dans le code du Userfom il n;y est pas stipuler specifiquement que la Text Box18 ou 27 va dans la collone S ou AB mais de cette facon ("TextBox" & i) donc la question n;est pas general dans VBA mettre un format date (cdate) mais specifiquement dans ce code en s'achant que je veux pas mettre toute les TextBox en format date je veux juste que lorsque je VALIDE les collonns S ou AB ne ce transforme pas d'eux meme de 01/06/13 a 06/01/13

Probleme 3
Nous verons plus tard

J'espere avoir etait clair pour ma part la question est tres simple garder le format de cellule dans les TextBox et apres validation aussi sans passer de 223252525 a 022-325 25 25 et de 01/06/13 a 06/01/13

PS: si tu peux me mettre le code excat c'est mieux car je sais fair les fonction pour VBA en general mais dans ce code je vois pas comment les psecifier en sachant que ca passe d'un ligne a l'autre a chque fois
 
Dernière édition:
Re : VBA probleme de mise en forme apres validation USerForm

Et si tu essayais d'appliquer les réponses apportées ?

1) quand tu écris dans ces cellules il faut écrire 223252525 puisqu'elles ont le format que tu désires. Utilise replace() pour supprimer les - et les espaces, puis converti en numérique avec cdbl()
Ex : [D7] = CDbl(Replace(Replace(TextBox1, " ", ""), "-", ""))

Si tu dois l'écrire en A1 alors :
[A1]=cdate(TextBox31)
ca je sais faire , le probleme c'est que dans le code du Userfom il n;y est pas stipuler specifiquement que la Text Box18 ou 27 va dans la collone S ou AB mais de cette facon ("TextBox" & i)
Tu ne peux pas écrire tous tes textbox dans les cellules dans une boucle unique puisqu'ils ont différent types de données.
C'est à toi de dire pour telle(s) colonne(s) je converti le texte de mon textbox ainsi parce que c'est un n° de tel, pour telle autre ainsi parce que c'est une date, etc C'est toi qui choisi et impose, excel ne devinera jamais.

eric
 
Re : VBA probleme de mise en forme apres validation USerForm

Bonjour Bens, Eric,

Comme le dit Eric, c'est bien à toi de dire à Excel ce que tu veux faire.

Voici ton fichier avec les modifications demandées.

Par contre, tu as une erreur sur le dernier client.

A+

Martial
 

Pièces jointes

Re : VBA probleme de mise en forme apres validation USerForm

Yallo bonjour
desole mais le format du telephone continue de changer de 223252525 a 022-325 25 25 a la rigeur ce probleme me derange moin que les dates :

Dans AB c'est bon ca ce change pas mais dans S ca continue de 01/06/13 > VALIDER > 06/01/13
 
Re : VBA probleme de mise en forme apres validation USerForm

Bonjour Bens,

A un moment, il va falloir que tu étudies un peu les codes que l'on te met et que tu fasses le boulot par toi-même.

Il n'y a qu'à lire ce que j'ai fait pour AB et adapter pour S.

A+

Martial
 
Re : VBA probleme de mise en forme apres validation USerForm

Chui desole Yaloo mais j;ai essayer d'adapter le code mais j;arrive pas :

Code:
'Correspond au programme du bouton MODIFIER
Private Sub CommandButton2_Click()


  If MsgBox("Confirmer Modification ?", vbYesNo, "Demande de confirmation") = vbYes Then
    Sheets("ACTIF").Cells(j, 1) = CDate(TextBox31)

    For i = 1 To 28 'Nombre de Colonne
      If i = 27 Then
      Sheets("ACTIF").Cells(j, i + 1).Value = CDate(Me.Controls("TextBox" & i))
      Else

      If i = 18 Then
      Sheets("ACTIF").Cells(j, i + 1).Value = CDate(Me.Controls("TextBox" & i)) ' J'AI RAJOUTER CA
      
      Else
      Sheets("ACTIF").Cells(j, i + 1).Value = Controls("TextBox" & i).Value
      End If
    Next i
  End If
 
Re : VBA probleme de mise en forme apres validation USerForm

J'ai essayer ca aussi marche pas

Code:
      For i = 1 To 28 'Nombre de Colonne
      If i = 27 And i = 18 Then
      Sheets("ACTIF").Cells(j, i + 1).Value = CDate(Me.Controls("TextBox" & i))
      Else
      Sheets("ACTIF").Cells(j, i + 1).Value = Controls("TextBox" & i).Value
        
      End If
      Next i
      End If
 
Re : VBA probleme de mise en forme apres validation USerForm

J'ai essayer ca aussi

Code:
'Correspond au programme du bouton MODIFIER
 Private Sub CommandButton2_Click()
 

  If MsgBox("Confirmer Modification ?", vbYesNo, "Demande de confirmation") = vbYes Then
     Sheets("ACTIF").Cells(j, 1) = CDate(TextBox31)
 
    For i = 1 To 28 'Nombre de Colonne
       If i = 27 Then
       Sheets("ACTIF").Cells(j, i + 1).Value = CDate(Me.Controls("TextBox" & i))
       And
 
      If i = 18 Then
       Sheets("ACTIF").Cells(j, i + 1).Value = CDate(Me.Controls("TextBox" & i))
       
      Else
       Sheets("ACTIF").Cells(j, i + 1).Value = Controls("TextBox" & i).Value
       End If
     Next i
   End If

ca aussi marche pas 😡 desole je voie pas
 
Re : VBA probleme de mise en forme apres validation USerForm

Bonsoir Bens, le fil,

Tu n'étais pas loin au post#11 😉 il suffit de remplacer And par Or, car ton i ne peut pas être = 18 et = 27, alors qu'il peut être = 18 ou = 27

A+

Martial
 

Pièces jointes

Re : VBA probleme de mise en forme apres validation USerForm

Bonsoir à tous,

ou bien tu peux utiliser select case :
Code:
For i = 1 To 28   'Nombre de Colonne
    Select Case i
    Case 4 To 6    ' tel
        Sheets("ACTIF").Cells(j, i + 1).Value = CDbl(Replace(Replace(Me.Controls("TextBox" & i), " ", ""), "-", ""))
    Case 18, 27    ' date
        Sheets("ACTIF").Cells(j, i + 1).Value = CDate(Me.Controls("TextBox" & i))
    Case Else
        Sheets("ACTIF").Cells(j, i + 1).Value = Controls("TextBox" & i).Value
    End Select
Next i
eric
 
Dernière édition:
Re : VBA probleme de mise en forme apres validation USerForm

Yaloo bonjour
bon merci pour le coup de main j'essaye je te jure tous les jours ya un bug par contre a ce niveaux la qu'il n;y avais pas dans l'ancien fichier :

Private Sub UserForm_Initialize()
For j = 2 To Sheets("ACTIF").Range("A" & Rows.Count).End(xlUp).Row
If Sheets("ACTIF").Cells(j, 1) <> "" And Sheets("ACTIF").Cells(j, 1) <= Date Then
TextBox31 = Sheets("ACTIF").Cells(j, 1)
For i = 1 To 28 'Nombre de Collone A POMPER
If i = 25 Then
Stop 'BUG
TextBox25 = Date - CDate(Range("AB" & j).Value2) & " Jours d'impayes"
Else
Me.Controls("TextBox" & i) = Sheets("ACTIF").Cells(j, i + 1).Text
End If
Next i
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour