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 :

Dépacement de capacité


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut Dépacement de capacité
    Bonjour,

    voilà j'ai un code VBA pour rapatrié des données sur une feuille excel et j'ai débogage "Dépassement de capacité" et je ne sais pas comment faire ????

    sur cette ligne Voici mon code :

    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
    Option Explicit
    Sub Prestation()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim Cell As Range, adres As Integer
    Dim Plage As Range
        Set FL1 = Worksheets("Data Global")
        Set FL2 = Worksheets("prestation")
        FL1.Columns("A:A").NumberFormat = "0"
        FL2.Columns("A:A").NumberFormat = "0"
        FL1.Activate
        Dim Derlig As Long
        Derlig = FL1.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
        Set Plage = FL1.Range(Cells(14, 1), Cells(Derlig, 1))
    
    For Each Cell In Plage
            adres = Adresse(FL1, Cell, Cell.Offset(0, 1), Cell.Offset(0, 4), Cell.Offset(0, 5))
            If Not adres = Empty And Not adres = 0 Then
                '*** A modifier en bouclant sur le tableau des N° de lignes ***
                Cell.Offset(0, 9) = FL2.Cells(adres, 7)
                '********************************************************
            End If
        Next
        Set FL1 = Nothing
        Set Plage = Nothing
    End Sub
    
    
    Function Adresse(FL1 As Worksheet, ParamArray ctrs()) As Integer
    Dim DerCol As String, NoCol As Integer, Derlig
    Dim Colonnes As Variant, Plage As Range, NoLig As Long
    Dim FL2 As Worksheet
        Set FL2 = Worksheets("prestation")
        'MsgBox ctrs(0) & "  " & ctrs(1) & "  " & ctrs(2) & "  " & ctrs(3) & "  "
        Colonnes = Array(1, 2, 5, 6)
    
        'Suppression d'un filtre existant éventuel
        If FL2.FilterMode = True Then FL2.AutoFilterMode = False
        DoEvents
        
            'Dernière colonne de la plage de données
        DerCol = Split(FL2.Cells(1, Rows(1).Cells.Count).End(xlToLeft).Address, "$")(1)
    
     
        'Pose du filtre sur toutes les colonnes de la plage de données
       FL2.Columns("A:" & DerCol).AutoFilter
        DoEvents
        'Filtrage des n colonnes
        For NoCol = 0 To UBound(ctrs)
            Set Plage = FL2.Columns(Colonnes(NoCol))
                Plage.CurrentRegion.AutoFilter _
                    Colonnes(NoCol), ctrs(NoCol)
        Next NoCol
        
        Derlig = FL2.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
        
        '************* A MODIFIER POUR RENVOYER UN TABLEAU DE No DE LIGNES ************
        For NoLig = 2 To Derlig
            'ok = Not FL2.Rows(NoLig).EntireRow.Hidden
            If Not FL2.Rows(NoLig).EntireRow.Hidden Then
                Adresse = NoLig
                Exit Function
            End If
        Next
        '******************************************************************************
        
    End Function

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Jour Bon
    Integer -32 768 à 32 767
    Long -2 147 483 648 à 2 147 483 647 etc

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    désolé je suis débutant en VBA je dois remplacer koi dans le code ????

    mes données vont jusquà la ligne 37194

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Tu avais la réponse sous les yeux
    NoLig est déclarée en Long
    Adresse=NoLig or Adresse d'après ton code attend un Integer
    d'ou ton pb, donc Function Adresse(ParamArray ctrs()) As Long
    Je pense d'ailleurs que ce code te posera d'autres problemes

  5. #5
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour à tous

    Les variables integer etant limitées à 32767, une feuille excel à 65536 lignes, il est toujours preferable de definir des variables concernant les lignes en Type Long

    il y a un autre endroit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim FL2 As Worksheet
    Dim Cell As Range, adres As Long
    Dim Plage As Range
    Au vu de la ligne suivante, quand la fonction sera corrigée, ca continuera à planter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adres = Adresse(FL1, Cell, Cell.Offset(0, 1), Cell.Offset(0, 4), Cell.Offset(0, 5))

  6. #6
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Alors comment je peux faire désolé je suis débutant et je n'y connais quasiment rien ..


    Merci de votrea ide et bonne année à tous............

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 13/08/2011, 14h02
  2. dépacement de capacité d'exportation
    Par anis cherif dans le forum Administration
    Réponses: 3
    Dernier message: 25/03/2011, 00h09
  3. dépacement capacité (division euclidienne)
    Par Darksnakes dans le forum Débuter
    Réponses: 5
    Dernier message: 01/12/2008, 10h20
  4. [Système] Connaitre la capacité d'un disque dur et l'espace libre
    Par sebastakis dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 03/12/2007, 12h48
  5. Excel ne peut pas ouvrir un fichier (dépacement de capacité ?)
    Par Jpeg69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/07/2007, 10h55

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