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

herve62

XLDnaute Barbatruc
Bonjour
Un arrêt de qq mois et on perd ... beaucoup!
Je pensais gagner du temps en automatisant une saisie de facture ... mais là j'en perd !
Des bases que je ne maîtrise plus ??
Merci de me rappeler
D'entrée > Erreur sur SAISIE.show ??? puis l'initialize qui fait rien
AloÏs me guette .. non ?
Merci pour la douche !!!!!!!!
Je pense quand je verrai vos réponse .. j'aurai la honte 🙁
 

Pièces jointes

Re : Aide ..Rappel !

Bonjour,

Pour userForm_Initialize: il faut activer la feuille avant de pouvoir faire des .Select!
Sheets("Facture").Activate

tes lignes peuvent s'écrire comme ceci Sans activation de la feuille.

Code:
Worksheets("Facture").Range("D2:E4,A12:D28").ClearContents

Ou comme ceci avec activation de la feuille
Code:
Worksheets("Facture").Activate
Range("D2:E4,A12:D28").ClearContents

A+
 
Re : Aide ..Rappel !

Salut Hasco
Ok , mais j'ai recopié ( pour aller + vite ?) des bouts d'appli que j'ai fait , il y a .. !
Et cà :
Sub auto_open()
Worksheets("start").Select
SAISIE.Show 0
End Sub

Ca plante à l'ouverture , j'ai juste changé le nom USF , dans l'autre appli .. no soucis ?
 
Re : Aide ..Rappel !

re,

Va dans outil/option de l'éditeur VBA et dans l'onglet Général coche l'option 'arrêt dans le module de classe' dans la section récupération d'erreur!
Ferme ton fichier, rouvre le
Tu verras que ton erreur vient non pas de auto open mais de UserForm_Initialize! Parceque la feuille active est 'Start' et que tu essaies de selectionner des Range sur facture sans avoir activer cette dernière.

A+

A+
 
Re : Aide ..Rappel !

Merci pour ton aide Hasco
Bon je dois m'y remettre ..et ca va revenir ( j'espère !)
Sinon dernier point ....
Mon N° de fac a pour format : YYMMxxx
Je met les données de mes fac. dans un fichier de suivi ( non joint ..mais basic)
L'Idée est de récupérer à chaque nouvelle Fac. le dernier N° et incrémenter
Ex : si meme Année (YY) , meme Mois (MM) , alors je lis xxx et je fais +1 que j'inscris dans la cellule FACTURE N°
Sinon je passe à MM +1 et xxx= 001 ou encore chaque fin année YY + 1 ; MM=01 . etc ....
J'ai commencé , l'idée est-elle bonne ?? , j'ai déjà dû convertir car je découpe une chaine ensuite j'incrémente comme un nombre ... Faut pas se tromper
Aller .. Bonne soirée !!
Encore Merci
 
Re : Aide ..Rappel !

Voilà , je pense en avoir fini !
Seulement mon formatage de N° Fact ne me plait pas !!
Pour Initialiser : Je prends la date 02/11/2013 , je "tritouille" pour avoir 1311 là ca va
ensuite j'ai un fichier "Archive" , je regarde la dernière ligne enregistrée, dans une colonne je vois
1311005 et donc dans mon appli je voudrai mettre
1311006 pour l'instant j'en suis à 13116
En fait j'aimerai un format (sous VBA) YYMMxxx ( xxx= de 001 à 999 max) puis passer à
1312001 ... 002 etc (IMPORTANT le changement de mois et d'année)
Dans mon prog pour les xxx , je fais +1 ... mais il me met 1 2 3 d'où le 13116 ( exemple ci dessus)
Il faudrait 1311006 > je récupère > j'incrémente > j'ai 1311007
Suis je clair ? je peux mettre le fichier mais ca changera pas grand chose , en + il doit y être déjà
Merci
 
Re : Aide ..Rappel !

Bonjour,

Tu peux tester ceci. Mais tu aurais pu joindre ta macro! Dernière intervention en ce qui me concerne.
Code:
Function NewNum(DateFacture As Date) As Long
   Dim derNum As Long
   Dim base As String, fin As String
   'Récupérer le dernier numéro de facture
   derNum = Application.Max(Feuil1.Range("A1:A" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row))
   'le scinder en deux
   base = Left(CStr(derNum), 4): fin = Right(CStr(derNum), Len(CStr(derNum)) - 4)
   'comparer avec la date de la nouvelle facture
   If Format(DateFacture, "yymm") <> base Then
        'mois et année différente que dateFacture
        base = Format(DateFacture, "yymm"): fin = "001"
        NewNum = CLng(base & fin)
    Else
        'année et mois identique
        NewNum = CLng(base & Format(CLng(fin) + 1, "000"))
    End If
End Function

A+
 
- 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