XL 2016 Test si feuille présente

GClaire

XLDnaute Occasionnel
Supporter XLD
Hello.

Dans la continuité de mon besoin et oui l'ont m'a déjà superbement bien aidé, je tente de faire un test que

1) Si une feuille éxiste envoyer des donnée dans la dite feuille
2) Si elle n'éxiste pas, la créer (Avec l'intitulé des collones, ca je verrai ensuite) et surtout avec le nom de celle-ci
3) Une fois créer, la remplir.

j'ai donc adapté un code mis sur ce forum par un internaute, le test a l'aire de marchotter, car cela me créer bien la nouvelle feuille avec le bon nom (ANNEE + ANNEE en cours comme ceci ANNEE 2018), cela m'envoie bien les données, mais si la feuille éxiste, cela me crée quand même une feuille (FeuilX).

Voici le code du bouton en question.

VB:
Private Sub cmdButValider_Click()
Dim strNomFeuille  As String
Dim FeuilleInexistante As String

With USF_NouveauMouvement
    If .LabelDate.Caption = "" Or .Cbx_Client.Text = "" Then Exit Sub  'Or .TXT_ValeurDuMouvement.Text
        Dte = .LabelDate.Caption: .LabelDate.Caption = ""
        StrAnneeMouv = Application.Proper(Format(Dte, "yyyy"))
        StrClient = .Cbx_Client: .Cbx_Client.Text = ""
        StrNumFacture = .Txt_NumFacture: .Txt_NumFacture = ""
        StrDesignationDePrestation = .Txt_NatureDePrestation: .Txt_NatureDePrestation = ""
        S_TXT_ValeurDuMouvement = .TXT_ValeurDuMouvement: .TXT_ValeurDuMouvement = ""
       
        StrVenMar = .Txt_VenMar: .Txt_VenMar = ""
        S_Txt_VenMar = StrVenMar * (Sheets("Données").Range("F4")) / 100
       
        StrServComArti = .Txt_ServComArt: .Txt_ServComArt = ""
        S_Txt_ServComArt = StrServComArti * (Sheets("Données").Range("F5")) / 100
       
        StrAutPrestaServ = .Txt_AutPrestaServ: .Txt_AutPrestaServ = ""
        S_TxtAutPrestaServ = StrAutPrestaServ * (Sheets("Données").Range("F6")) / 100

        StrCotosationMicroSocial = (StrVenMar + StrServComArti + StrAutPrestaServ) * (Sheets("Données").Range("F7")) / 100 '+ StrAutPrestaServ +StrVenMar
        StrTaxesCCIVente = StrVenMar * StrVenMar * (Sheets("Données").Range("F8")) / 100 'Taxes CCI Vente
        StrTaxesCCIService = (StrServComArti + StrAutPrestaServ) * (Sheets("Données").Range("F9")) / 100 'Taxes CC Service
       
        StrTaxesTotales = S_Txt_VenMar + S_Txt_ServComArt + S_TxtAutPrestaServ + StrCotosationMicroSocial + StrTaxesCCIVente + StrTaxesCCIService 'Sommes des taxes
        StrBenefices = StrVenMar + StrServComArti + StrAutPrestaServ - StrTaxesTotales 'Reste facture-charges

    End With
   
   
'Si besoin nom de la feuille à créer
strNomFeuille = "ANNEE " & StrAnneeMouv
    
'Test de son existance
FeuilleInexistante = IsError(Evaluate("=" & strNomFeuille))
   
'Si elle n'existe pas. il faut la créer.
If (FeuilleInexistante = True) Then
    Sheets.Add
    ActiveSheet.Name = strNomFeuille
   
   
With Worksheets("ANNEE " & StrAnneeMouv)
    DerLgn = .Cells(10000, 1).End(xlUp).Row + 1
    .Cells(DerLgn, 1).Value = Dte 'Date
    .Cells(DerLgn, 2).Value = StrClient 'Client
    .Cells(DerLgn, 3).Value = StrNumFacture 'N° Facture
    .Cells(DerLgn, 4).Value = StrDesignationDePrestation 'Désignation de la prestation
    .Cells(DerLgn, 5).Value = S_TXT_ValeurDuMouvement 'Valeur du mouvement
   
    .Cells(DerLgn, 6).Value = StrVenMar 'Renseignement Vente de marchandise
    .Cells(DerLgn, 7).Value = S_Txt_VenMar 'Calcul Cotisations vente de marchandises
   
    .Cells(DerLgn, 8).Value = StrServComArti 'Renseignement Services commerciale ou artisanal
    .Cells(DerLgn, 9).Value = S_Txt_ServComArt 'Calcul cotisations Services commerciale ou artisanal
   
    .Cells(DerLgn, 10).Value = StrAutPrestaServ 'Autres services
    .Cells(DerLgn, 11).Value = S_TxtAutPrestaServ 'Calcule Cotisations Autres services
   
   
    .Cells(DerLgn, 12).Value = StrCotosationMicroSocial 'Calcul Cotisation micro social
    .Cells(DerLgn, 13).Value = StrTaxesCCIVente 'Calcul Taxes CCI Vente
    .Cells(DerLgn, 14).Value = StrTaxesCCIService 'Calcul Taxes CCI Service
   
    .Cells(DerLgn, 15).Value = StrTaxesTotales 'Calcul Sommes des taxes
    .Cells(DerLgn, 16).Value = StrBenefices 'Calcul Somme des bénéfices
End With
End If

UserForm_Activate
UserForm_Initialize

End Sub

Si vous avez une idée.


Merci Beaucoup G'Claire
 

job75

XLDnaute Barbatruc
Bonjour GClaire,

Il est facile de se rendre compte que le test :
Code:
'Test de son existance
FeuilleInexistante = IsError(Evaluate("=" & strNomFeuille))
n'a ni queue ni tête : la valeur renvoyée est toujours True (VRAI).

Utiliser à la place :
Code:
'Test de son existence
FeuilleInexistante = True
On Error Resume Next
FeuilleInexistante = IsError(Sheets(strNomFeuille))
On Error GoTo 0
A+
 

Statistiques des forums

Discussions
312 169
Messages
2 085 909
Membres
103 032
dernier inscrit
etima