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

VB 6 et antérieur Discussion :

Bloqué sur une sélection de lignes: 1ère ligne à la dernière d'une sheet Excel


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Par défaut Bloqué sur une sélection de lignes: 1ère ligne à la dernière d'une sheet Excel
    Bonjour,

    Je suis en ce moment sur un petit programme VB avec qui manipule 2 classeurs Excel. J'utilise pour ça Visual Basic 2005 Express.

    Le projet fait référence à Excel et j'ai en plus importer Excel dans le module.

    Comme je suis pas une star de la prog, j'ai décidé de créer des Macros sous Excel dans un premier temps et de voir le code généré dans le Visual Basic Editor d'Excel. Puis j'adapte les lignes de code des Macros dans un module sous VB 2005.

    Voilà pour la petite intro

    Le code que je "crée" n'est pas optimisé loin de là mais tout ce que je veux c'est un résultat. Et je bloque sur une sélection des lignes utilisées dans la feuille. Voici le code, je pense que vous trouverez facilement le(s) endroit(s) où ça HIC! Je l'ai marqué par un commentaire.

    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
    74
     
    Sub MakeFile(ByVal sourceFilePath As String, ByVal SourceFileName As String, ByVal DestinationFolderPath As String, ByVal DestinationFileName As String, ByVal column1 As String, ByVal column2 As String, ByVal column3 As String, ByVal NumberLines As Integer)
     
            ' Create an Excel application and add a workbook
            Dim excelApp As New Excel.Application
            excelApp.Visible = True ' True for the test and false to hide the application
     
            Dim wbookSource As Workbook = excelApp.Workbooks.Open(sourceFilePath)
            Dim wbookDestination As Workbook = excelApp.Workbooks.Add
     
            ' Save the destination file
            excelApp.DisplayAlerts = False
            ChDir(DestinationFolderPath)
            wbookDestination.SaveAs(DestinationFolderPath & "\" & DestinationFileName)
            excelApp.DisplayAlerts = True
     
            ' Count the number of sheets in the source file
            Dim numberSheets As Integer = wbookSource.Worksheets.Count
     
            Dim i As Integer
            For i = 1 To numberSheets Step 1
     
                wbookSource.Worksheets(i).Activate()
                Dim sheetName As String = wbookSource.ActiveSheet.Name
                excelApp.Columns(column1).Select()
                excelApp.Selection.Copy() 'copy the column
     
                wbookDestination.Worksheets(i).Activate()
                wbookDestination.Worksheets(i).Name = sheetName 'affect a name to the sheet
                excelApp.Range("A1").Select() 'paste the column previously copied in the destination file's sheet
                excelApp.ActiveSheet.Paste()
     
                wbookSource.Worksheets(i).Activate()
                excelApp.Columns(column2).Select()
                excelApp.Selection.Copy() 'copy the column
     
                wbookDestination.Worksheets(i).Activate()
                excelApp.Range("B1").Select() 'paste the column previously copied in the destination file's sheet
                excelApp.ActiveSheet.Paste()
     
                wbookSource.Worksheets(i).Activate()
                excelApp.Columns(column3).Select()
                excelApp.Selection.Copy() 'copy the column
     
                wbookDestination.Worksheets(i).Activate()
                excelApp.Range("C1").Select() 'paste the column previously copied in the destination file's sheet
                excelApp.ActiveSheet.Paste()
     
                ' Delete eventual extra lines
                Dim LastLineSheetRef As Integer ' First let's count lines of the source file's sheet
                wbookSource.Worksheets(i).Activate()
                excelApp.Range("A1").Select()
                '
    '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ' HIC!            
    'C'est là que je galère le code suivant est celui founit par l'Editeur Excel à adapter
    ' je veux compter le nombre de lignes utilisées dans la ième feuille du classeur
    '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                '
                '
                Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select()
                LastLineSheetRef = Selection.Rows.Count
                '
                '
                ' autres traitements prévus
            Next
     
            ' save the destination file + close the excel files and stop the excel application
            excelApp.DisplayAlerts = False
            excelApp.Workbooks(DestinationFileName).Close(True)
            excelApp.Workbooks(SourceFileName).Close(False)
            excelApp.DisplayAlerts = True
            excelApp.Quit()
        End Sub
    Si vous avez une petie idée faites-moi signe.

    Merci d'avance et à bientôt!
    reun0

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    rien de grave mais tu n'es pas dans la bonne section du forum, ici c'est VB6 et plus ancien.
    Il vaudrait mieux poser ta question dans la section "VB.Net". Dans ce cas mets ce sujet en délestage stp

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Par défaut
    Citation Envoyé par OhMonBato
    rien de grave mais tu n'es pas dans la bonne section du forum, ici c'est VB6 et plus ancien.
    Il vaudrait mieux poser ta question dans la section "VB.Net". Dans ce cas mets ce sujet en délestage stp
    Oups!

    Ok bon bah je m'en vais

    Non mais c'est marrant parce que je viens de trouver la soluce tout seul comme un grand. J'ai perdu 2 jours sur ce truc et là je poste et je trouve la soluce 2 sec après

    Bon je file la soluce et je mets mon poste à la poubelle mdr

    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select()
                LastLineSheetRef = Selection.Rows.Count
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                excelApp.Range(excelApp.Selection, excelApp.ActiveCell.SpecialCells(Excel.Constants.xlLastCell)).Select()
                LastLineSheetRef = excelApp.Selection.Rows.Count
    Merci à toi pour ta réponse rapide et à moi pour la réponse bonne héhé

    A bientôt!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/12/2014, 12h11
  2. [AC-2003] lire une table Access en VBA ligne par ligne
    Par afifaNancy dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/06/2012, 13h54
  3. [XL-2010] Trier des lignes d'un tableau à partir d'une sélection listbox
    Par JulienLeno dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 19/10/2011, 16h00
  4. [importdata] MATLAB R2008 bloque sur une ligne vide
    Par campofelliz dans le forum MATLAB
    Réponses: 8
    Dernier message: 21/11/2008, 15h32
  5. Regrouper une sélection en fonction d'un champ et d'une date
    Par 12_darte_12 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 29/03/2006, 17h12

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