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 :

manipulation de fichiers et ajout de feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Pologne

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Par défaut manipulation de fichiers et ajout de feuilles
    Bonjour,

    J'ai fait de mon mieux pour developper par moi meme mais je viens d'atteindre mes limites.

    Je m'explique j'ai un premier fichier ou beaucoup de choses se passent sans encombre.

    je souhaite pouvoir creer un classeur different pour en faire un rapport par mois avec une feuille par jour du mois.

    le code suivant me permet de creer mon fichier :

    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
    Sub createreport()
     
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
     
        'On créer l'objet Excel
        Set xlApp = CreateObject("Excel.Application")
        'On défini le nombre d'onglets (ici 5)
        xlApp.SheetsInNewWorkbook = 1
        'On ajoute un classeur
        Set xlBook = xlApp.Workbooks.Add
        'On donne un nom au classeur
        On Error Resume Next
            xlBook.SaveAs ThisWorkbook.Path & "\" & ("Report Manual request" & " " & Format(Now, "mmm-yyyy") & ".xls")
            Range("J4").Value = ThisWorkbook.Path & "\" & ("Report Manual request" & " " & Format(Now, "mmm-yyyy") & ".xls")
        On Error GoTo 0
        'On rend le classeur visible
        xlApp.Visible = True
        'On créer l'objet onglet dans le nouveau classeur créé
        Set xlSheet = xlBook.Worksheets(1)
        'On affecte un nom aux l'onglets
        xlSheet.Name = Format(Now, "dd")
        'on copie les donnees
        'dataexport()
        'On ferme l'application
        xlApp.Quit
     
    End Sub
    ensuite je tente de reouvrir ce tableau en cas d'ajout de donnees au rapport et je test si le jour existe. sinon j'ajoute une feuille. Et la c'est le drame :

    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
    Sub addtoreport()
     
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim dataholderwb As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim dataholderws As Excel.Worksheet
     
        Set dataholderwb = ThisWorkbook
        Set dataholderws = Sheets("b.U fill up")
        Debug.Print dataholderwb.FullName
        'Debug.Print dataholderws.FullName
     
     
     
        If Range("J4").Value <> "" Then
              Set X1book = Workbooks.Open(Range("J4").Value)
              Debug.Print X1book.FullName
              If CheckSheet(Format(Now, "dd")) Then
              'sheet already exist
                   Set xlSheet = X1book.Worksheets(Sheets.Count).Activate
                   Debug.Print X1book.FullName
                   Debug.Print X1sheet.FullName
     
                   'selection de la feuille
                   'ajouter enregistrements
              Else
              'sheet doesn't exist
                X1book.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count)
                Set xlSheet = Sheets(ThisWorkbook.Sheets.Count)
                xlSheet.Name = Format(Now, "dd")
     
                   Debug.Print X1book.FullName
                   Debug.Print X1sheet.FullName
     
              End If
              'copier les donnees
        Else
                MsgBox "No existing report"
        End If
     
     
     
    End Sub
    Function CheckSheet(ByVal sSheetName As String) As Boolean
     
        Dim oSheet As Excel.Worksheet
        Dim bReturn As Boolean
     
        For Each oSheet In ActiveWorkbook.Sheets
     
            If oSheet.Name = sSheetName Then
     
                bReturn = True
                Exit For
     
            End If
     
        Next oSheet
     
        CheckSheet = bReturn
     
    End Function
    ca plante a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     X1book.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count)
    si ma feuille n'existe pas

    ou a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlSheet = X1book.Worksheets(Sheets.Count).Activate
    si ma feuille existe.

    help please

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Pologne

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Par défaut
    avec le code add report ce sera peut etre plus simple.

    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
    Sub addtoreport()
     
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim dataholderwb As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim dataholderws As Excel.Worksheet
     
        Set dataholderwb = ThisWorkbook
        Set dataholderws = Sheets("b.U fill up")
        Debug.Print dataholderwb.FullName
        'Debug.Print dataholderws.FullName
     
     
     
        If Range("J4").Value <> "" Then
              Set X1book = Workbooks.Open(Range("J4").Value)
              Debug.Print X1book.FullName
              If CheckSheet(Format(Now, "dd")) Then
              'sheet already exist
                   Set xlSheet = X1book.Worksheets(Sheets.Count).Activate
                   Debug.Print X1book.FullName
                   Debug.Print X1sheet.FullName
     
                   'selection de la feuille
                   'ajouter enregistrements
              Else
              'sheet doesn't exist
                X1book.Sheets.Add After:=Sheets(ThisWorkbook.Sheets.Count)
                Set xlSheet = Sheets(ThisWorkbook.Sheets.Count)
                xlSheet.Name = Format(Now, "dd")
     
                   Debug.Print X1book.FullName
                   Debug.Print X1sheet.FullName
     
              End If
              'copier les donnees
        Else
                MsgBox "No existing report"
        End If
     
     
     
    End Sub
    Function CheckSheet(ByVal sSheetName As String) As Boolean
     
        Dim oSheet As Excel.Worksheet
        Dim bReturn As Boolean
     
        For Each oSheet In ActiveWorkbook.Sheets
     
            If oSheet.Name = sSheetName Then
     
                bReturn = True
                Exit For
     
            End If
     
        Next oSheet
     
        CheckSheet = bReturn
     
    End Function

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Sans aller plus loin dans ton code, je note que tu as deux variables différentes pour ton classeur :

    - X1book non déclaré, et qui est sur les lignes que tu indiques en erreur
    - xlBook déclaré, et qui est instancié sur ton objet classeur

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Pologne

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Par défaut
    je suis super stupide. Je controle ca et revient vers le forum asap.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2006, 08h46
  2. Manipulation des fichiers
    Par monsau dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2004, 17h45
  3. [LG]Manipulation de fichiers
    Par yffick dans le forum Langage
    Réponses: 29
    Dernier message: 10/01/2004, 15h04
  4. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28
  5. Réponses: 2
    Dernier message: 18/01/2003, 17h06

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