IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Aide pour terminer un code qui ne fonctionne pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Aide pour terminer un code qui ne fonctionne pas
    Bonjour à tous,

    J'ai une fichier contenant un certain nombre de feuilles commençant par la lettre "L".
    Avec le code que j'ai essayé de faire, et lorsque je clique sur le bouton "Valider " de mon UserForm, je dois rechercher si la feuille existe dans mon fichier. Si elle n'existe pas on la créée, si elle existe alors on remplie les colonnes selon les données provenant de l'UserForm.
    Mais cela ne marche pas, rien ne se produit. Je n'arrive pas à faire la recherche de la feuille dans mon fichier. La première partie fonctionne bien, mais pas la deuxième (TestA)
    Pouvez-vous m'aider s'il vous plait à terminer mon code ?
    Merci par avance

    Premièrement on vérifie qu'aucune saisie n'a été oubliée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Private Sub CmbOk_Click()
    Dim erreur(7) As Boolean, msg As String, I As Byte
    Dim Tablo As Variant
     
    'Ver = 0
    Tablo = Array("", "La ligne de crédit ?", "Le tiers ?", "Le site ?", "L'objet ?", "Le n° d'engagement ?", "Le montant ?", "Qui engage ?")
    erreur(1) = Me.CmbListCred = ""
    erreur(2) = Me.CmbListeTiers = ""
    erreur(3) = Me.CmbListeBat = ""
    erreur(4) = Me.TxtObjet = ""
    erreur(5) = Me.TxtNum = ""
    erreur(6) = Me.TxtMontant = ""
    erreur(7) = Me.CmbNom = ""
    For I = 1 To 7
        If erreur(I) Then msg = msg & vbCrLf & "-" & " " & Tablo(I)
    Next
    If msg <> "" Then
        MsgBox "Vous avez oublié" & msg, 0, "A vérifier"
        Exit Sub
    End If
     
    TestA
    UFEngt.CmbListCred.SetFocus
    End Sub
    Ensuite on passe à la recherche de la feuille et à son remplissage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
    Sub TestA()
    Dim Ws As Worksheet, NumLig As String
    Dim NewRech As Boolean, Exist As Boolean
    Dim StFeuilComp As String
    WbkRecap As Workbook
    shtRecap As Worksheet
    Dim LastLigF As Long, LastLigR As Long
     
    Application.ScreenUpdating = False
     
    Set Ws = ThisWorkbook.Sheets '(?)Toutes les feuilles commençant par L
     
    NumLig = Me.CmbListCred.Value
    NewRech = False
     
     
        For Each Ws In Worksheets
            If Ws.Name = "L" & NumLig Then 'on cherche la feuille selon CmbListCred
                Set shtRecap = Ws
                Exist = True
                Exit For
            End If
            Next Ws
            If Not Exist Then
            shtRecap = WbkRecap.Sheets.Add(Type:=xlWorksheet) 'si elle n'existe pas on l'a créée
            shtRecap.Name = "L" & NumLig
            NewRech = True
        End If
        'si elle existe on remplie le tableau avec les données de l'UserForm UFEngt
    End If
           With Ws
           LastLigF = .Range("A65536").End(xlUp).Row + 1
           .Range("A" & LastLigF).Value = LastLigF - 7
           .Range("B" & LastLigF).Value = Me.TxtDate.Value
           .Range("B" & LastLigF).Value = Format(Me.TxtDate, "mm-dd-yyyy")
           .Range("C" & LastLigF).Value = Me.TxtNum
           .Range("D" & LastLigF).Value = Me.CmbListeBat.Value
           .Range("E" & LastLigF).Value = Me.TxtObjet.Value
           .Range("F" & LastLigF).Value = Me.TxtNumDev.Value
           .Range("G" & LastLigF).Value = Me.TxtDevis.Value
           .Range("G" & LastLigF).Value = Format(Me.TxtDevis, "mm-dd-yyyy")
           .Range("H" & LastLigF).Value = Me.CmbListeTiers.Value
           .Range("I" & LastLigF).Value = Me.LstTiers.Value
           .Range("J" & LastLigF).Value = Me.TxtMontant.Value
           .Range("K" & LastLigF).Value = Me.TxtMarche.Value
           .Range("L" & LastLigF).Value = Me.CmbNom.Value
           End With
        Ws.Close savechanges:=True
     
        Load UFEngt
        For I = 1 To 4 'On cherche les feuilles commençant par BC
            With Sheets("BC" & I)
                'On remplie les feuilles avec les données de l'UserForm UFEngt
                .Range("B24").Value = Me.CmbListeBat.Value
                .Range("B25").Value = Me.CmbNom.Value
                .Range("D24").Value = Me.CmbNom.Value
                .Range("G6").Value = CDate(Me.TxtDate)
                .Range("H14").Value = Me.CmbListCred.Value
                .Range("N11").Value = Me.CmbListeTiers.Value
                .Range("N15").Value = Me.TxtNum.Value
                .Range("N17").Value = Me.TxtMarche.Value
                .Range("N19").Value = Me.TxtNome.Value
                .Range("A29").Value = "Selon votre devis n°" & " " & Me.TxtNumDev & " " & "du" & " " & Me.TxtDevis & " " & "ci-joint."
                End With
     
            Next I
     
            End With
        End If
        Application.ScreenUpdating = True
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je ne comprends pas cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shtRecap = WbkRecap.Sheets.Add(Type:=xlWorksheet)
    Aparemment, "WbkRecap" n'est pas défini et je mettrais plutôt "Set shtRecap"

  3. #3
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    J'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Feuil()
     
       Dim objWorksheet As Worksheet
       NumLig = 4
       IsWorksheet = False
       For Each objWorksheet In ActiveWorkbook.Worksheets
          If objWorksheet.Name = "L" & NumLig Then
             IsWorksheet = True
          End If
       Next
       If IsWorksheet = False Then
            Sheets.Add before:=Sheets(1)
            ActiveSheet.Name = "L" & NumLig
       End If
     
    End Sub

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour Daniel C.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shtRecap = WbkRecap.Sheets.Add(Type:=xlWorksheet)
    Je voulais indiquer que les feuilles sont du fichier actif


    Bonjour QuestVba

    Ton code concerne la partie où l'on vérifie si la feuille existe, est-ce bien cela ?

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Alors remplace par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WbkRecap = ActiveWorkbook
    Set shtRecap = WbkRecap.Sheets.Add(Type:=xlWorksheet)

  6. #6
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Oui c'est effectivement la partie recherche de la feuille et création si elle n'existe pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nouvelle aide pour terminer un code
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/09/2013, 15h20
  2. Aide pour un code qui ne fonctionne pas correctement
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/03/2013, 09h23
  3. [MySQL] Aide pour terminer le code de traitement !
    Par plorton dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/08/2011, 13h07
  4. Réponses: 2
    Dernier message: 04/10/2007, 16h05
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 06/11/2005, 23h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo