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 :

Erreur dépassement de capacité [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 511
    Par défaut Erreur dépassement de capacité
    Bonjour à tous

    Je travaille sur un fichier excel qui par le biais du macro vba me permet de copier des donnée dans un autre fichier en supprimant les lignes comportant un zéro et en y ajoutant en premiere colonne une liste alphabetique.

    Le soucis est que mon fichier vient de dépasser les 256 lignes et ma liste alphabetique s'arrete iv et ne veux pas continuer sur iw... ix..iy...iz..ja...jb et ainsi de suite.

    L'erreur se produit sur la ligne en rouge.

    Pouvez vous me dire ce qui bloque dans mon code et comment je peux palier au probleme.

    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
     
    Workbooks.Add
     
        Range("B1").PasteSpecial Paste:=xlPasteValues
     
    '----Permet d'effacer les ligne comportant un zero en quantité
    '----et de creer une liste alphabetique dans la premiere colonne
         Dim rADet As Range
    Dim rTab As Range
    Dim bColA As Integer 'Caractére 1° ligne
    Dim r As Range
    Set firstCell = Range("A1")
    Set lastCell = Range("H65536").End(xlUp)
    Set rTab = Range(firstCell, lastCell)
    Stop
     bColA = 1
    For Each r In rTab.Rows
      'ici à chaque tour de boucle ..
      ' r.. représente une ligne du tableau..
     
      If r.Cells(3) = 0 Then
        If rADet Is Nothing Then
          Set rADet = r
         Else
         Set rADet = Application.Union(rADet, r)
        End If
       Else
          st = Cells(1, bColA).AddressLocal(False, False)
       r.Cells(1) = LCase(Left(st, Len(st) - 1))
         bColA = bColA + 1
     
    End If
    Next
    If Not rADet Is Nothing Then rADet.Delete
    Merci d'avance

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    La variable BcolA est integer.
    Il est fort probable qu'a un moment elle prenne une valeur supérieure à 32767

  3. #3
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 511
    Par défaut
    Merci jfontaine, mais j'ai verifier quand ça bloque la variable à pour valeur 257 donc ce n'est pas sur cette variable qu'est le probleme, du moins j'en suis presque sur.

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Dans excel 2003 et antérieur il n'y a pas plus de 256 colonnes
    Ne serait ce pas cela le problème ?

  5. #5
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 511
    Par défaut
    Oui je suis d'accord il y a bien que 256 colonnes, mais comme je ne comprend pas bien ce code, je n'arrive pas à déchifrer comment la liste alphabetique est créer.
    Si elle est créé en reprenant l'intitulé alphabetique de chaque colonne pour créer la liste, c'est certainement cela qui pose probleme.
    Donc si c'est bien le probleme comment je peux faire pour créer ma liste alphabetique de plus de 256 caracteres?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Ci dessous une procédure qui affiche la liste dans la colonne A

    il te restera a adapter a ton besoin

    Ici on va jusqu’à 300
    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
     
    Sub ListeLettre()
     
    Dim strPos1 As String 'Contient la lettre niveau 1
    Dim strPos2 As String 'Contient la liette niveau 2
     
    Dim i As Integer
    Dim j As Integer
     
     
    For i = 1 To 300
     
        If j <= 26 Then
            strPos2 = Chr(65 + j)
        Else
     
            If strPos1 = "" Then
                strPos1 = "A"
            Else
                strPos1 = Chr(Asc(strPos1) + 1)
            End If
     
            j = 1
            strPos2 = ""
     
        End If
     
        j = j + 1
        Range("B" & i).Value = strPos1 & strPos2
     
    Next i
     
    End Sub

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

Discussions similaires

  1. [XL-2003] Erreur : dépassement de capacité
    Par bebel9313 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/01/2010, 18h38
  2. erreur "dépassement de capacité"
    Par butch31 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/07/2009, 15h59
  3. message d 'erreur "Dépassement de capacité"
    Par NAIMA2 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/03/2007, 14h05
  4. Erreur "dépassement de capacité"
    Par laurentcr dans le forum Access
    Réponses: 3
    Dernier message: 26/10/2006, 17h51
  5. [Access 2003] Erreur "Dépassement de capacité"
    Par Bapt.ice dans le forum Access
    Réponses: 2
    Dernier message: 08/06/2006, 12h15

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