Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Probleme USERFORM

  • Initiateur de la discussion Initiateur de la discussion eric72
  • 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 !

eric72

XLDnaute Accro
Bonjour a tous,
Dans le fichier ci-joint j'ai deux boutons "Ajouter un client" et "Ajouter une prestation", et lorsque je crée l'un ou l'autre il bug sur l'export de la 1ère ligne et je ne comprends pas du tout pourquoi.
Après quelques heures de recherche je m'en remet à votre savoir.
Merci beaucoup pour votre aide.
Eric
 

Pièces jointes

Bonjour Eric72

Il te faut declarer ta variable DerLigne en tant que Integer et pas en tant que Long

VB:
Private Sub BtnValider_Click()
        Dim derligne As Integer
        Dim question As Integer
 
Ah mais oui quel idiot, par contre quand je veux entrer une prestation et que je ne saisi pas le taux de marge il s'arrête dessus et bug, comment est il possible de passer par dessus cette étape si on ne saisit rien dedans?
Merci encore
Eric
 
Bonjour,
Pour les numéros de lignes par principe on met une variable Long pour être sûr de ne pas être bloqué par la limite d'un Integer (32767) bien inférieure au nombre de lignes possible en Excel.

Concernant ton problème, 2 choses me semblent à questionner.
1 - Worksheets("clients").Select
Je ne sais pas bien la différence mais il me semble que l'activation d'une feuille se fait par Worksheets("clients").Activate.

2 - Quoiqu'il en soit, il faut toujours qualifier complètement les objets qu'on utilise (par précaution et par principe) et ce même si la feuille activée est la bonne. Par exemple ça, ça me donne des palpitations:
VB:
Cells(no_ligne, 1) = TxtNom.Value
Cells(no_ligne, 2) = TxtPrenom.Value
Cells(no_ligne, 3) = TxtAdresse.Value
Cells(no_ligne, 4) = TxtCommune.Value
Cells(no_ligne, 6) = TxtCourriel.Value
Cells(no_ligne, 7) = TxtTelephone.Value
Mais avec ça mon rythme cardiaque revient à la normale:
Code:
With ThisWorkbook.Worksheets("clients")
    .Cells(no_ligne, 1) = TxtNom.Value
    .Cells(no_ligne, 2) = TxtPrenom.Value
    .Cells(no_ligne, 3) = TxtAdresse.Value
    .Cells(no_ligne, 4) = TxtCommune.Value
    .Cells(no_ligne, 6) = TxtCourriel.Value
    .Cells(no_ligne, 7) = TxtTelephone.Value
End With
D'ailleurs, avec cette qualification complète, même plus la peine d'activer la feuille cible.
 
Avec ton fichier c'est simple à reproduire:
- Ouvrir le fichier
- Afficher la feuille Devis (par exemple) ou toute autre feuille que Clients
- Lancer le UserForm Clients
=> CRASH

- Afficher la feuille Clients
- Lancer le UserForm Clients
= OK

C'est bien cette histoire de Worksheets("Clients").Select qui pose un problème.
Si on remplace par Worksheets("Clients").Activate cela fonctionne

De toutes façons, ni Select, ni Activate. Qualifier complètement les objets qu'on utilise !
Après chacun fait comme il veut.
 
Ok, j'ai pas vu qu'il y avait 1 UserForm pour la création et un autre pour la modification.
De plus le calcul de la dernière ligne n'est pas qualifié et la déprotection se fait sur l'ActiveSheet alros qu'il y a des .Select.
Je vérifie.
 
Non plus. Je perds le tableau structuré au 2ème essai!! Jamais vu ça.
Y a un truc qui me surprend. L'appel de la macro associée est une fonction que je ne trouve nulle part !
Pareil pour les prestations.
 
- 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

Réponses
16
Affichages
1 K
Réponses
36
Affichages
2 K
Réponses
3
Affichages
666
Réponses
5
Affichages
642
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…