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 :

Onglet corrompu ? [XL-2010]


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
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Par défaut Onglet corrompu ?
    Bonjour
    j'ai un bout de code basique qui lit séquentiellement un onglet source A
    et va écrire dans un onglet cible B.
    durée d'exécution plus de 3 heures, ce qui est anormal

    je crée un autre onglet cible C.
    modifie le code pour écrire sur le nouvel onglet C
    durée d'exécution 20 secondes.

    vous avez déjà vu un truc comme ça ?
    merci à vous
    Dropzone

  2. #2
    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
    Bonjour,

    il ressemble à quoi ce code basique ?

    ton problème ressemble étrangement au cas qu'on rencontre quand on a des milliers de lignes Excel inutilisées dans une feuille, mais qui sont encore définie comme "plage utile" de la feuille

    sélectionne la première ligne vide de ta feuille, appuie sur Ctrl+Alt +Flèche bas
    supprime toute cette sélection
    enregistre le classeur
    refais le test de ta procédure

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Par défaut
    merci
    déjà fait, mais ça ne change rien.
    Comme le nouvel onglet fonctionne correctement ce n'est pas très pénalisant, mais j'aime bien comprendre
    Il y a une façon de voire la plage utile d'un onglet ? c'est stocké quelque part ?

  4. #4
    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
    je ne vois toujours pas la moindre trace de ton code


    pour connaître la plage utile, va voir du côté de Worksheets.Usedrange, au besoin sur l'aide en ligne vba

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Par défaut
    oui, excuses, je cherchais le moyen d'insérer le code.
    les calculs sont dans la classe classGpo
    (je pourrais répondre que demain je file sur un autre site)
    merci à toi

    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
    75
    '******************************************************************************
    '   EcritureDercoPostes()                                            /// EN DEV
    '   Ecriture et formatage onglet Derco Postes
    '******************************************************************************
     
    Sub EcritureDercoPostes()
        Dim wLig As Long
        Dim wPosteActif As String
        Dim i As Long
        Dim j As Long
     
        'Contrôle position sur Import GPO
        If ActiveSheet.Name <> "Import GPO" Then
            MsgBox (" vous devez être sur la feuille Import GPO")
            Exit Sub
        End If
     
        'Déclaration de l'instance
        Dim MaConnexion As New classGpo
     
        'Calcul du nombre d'engeristrements à traiter
        wLig = Range("A" & Rows.Count).End(xlUp).Row
     
        'raz de la feuille de destination
        Worksheets("DercoP").Range("A2:B" & wLig).ClearContents
     
        'Tri par Poste et Date
        ActiveWorkbook.Worksheets("Import GPO").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Import GPO").Sort.SortFields.Add Key:=Range( _
            "C2:C" & wLig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        ActiveWorkbook.Worksheets("Import GPO").Sort.SortFields.Add Key:=Range( _
            "A2:A" & wLig), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Import GPO").Sort
            .SetRange Range("A1:C" & wLig)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
        'Traitement
        Application.StatusBar = "Traitement en cours"
        wPosteActif = ""
        j = 2
     
        For i = 2 To wLig
            'récupération des données GPO de la ligne active
            With MaConnexion
                .Uperid = Range("B" & i).Value
                .Poste = Range("C" & i).Value
                .DateBrute = Range("A" & i).Value
     
                'sélection des postes bureautique
                If .Usage = "Bureautique" Then
                    'écriture des données de connexion dans l'onglet Derco poste
                    If .Poste <> wPosteActif Then                                                   'premier enregistrement
                        wPosteActif = .Poste
                        Sheets("DercoP").Range("A" & j).Value = .Poste
                        Sheets("DercoP").Range("B" & j).Value = .DateCnx
                        j = j + 1
                    End If
                End If
            End With
        Next
     
        'libération de l'instance maConnexion
        Set MaConnexion = Nothing
     
        'Fin de traitement
        Application.StatusBar = ""
        MsgBox ("Traitement terminé")
    End Sub

  6. #6
    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
    Regarde simplement ce que vaut wLig quand tu traites la feuille où c'est long, et celle où c'est rapide. Histoire de vérifier si c'est la ligne "visuellement vide" qui ressort ou bien une ligne "vide" située plus bas que ta dernière ligne "visuellement vide".

    je crois que c'est là que tu pourrais éventuellement avoir des surprises

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

Discussions similaires

  1. [VB.NET] Couleurs des onglets d'un TabControl
    Par ineznia dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/04/2004, 13h18
  2. mettre une JScrollBar sur un onglet
    Par thedd dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 02/03/2004, 20h12
  3. [BCB6] Probleme onglet dans IDE
    Par bgautier dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/01/2004, 16h20
  4. Débogage corrompu par les optimisations du compilateur
    Par petitcoucou31 dans le forum EDI
    Réponses: 6
    Dernier message: 17/12/2003, 00h30
  5. Changer dynamiquement la position des onglets
    Par ginnovy dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/09/2002, 18h24

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