Erreur Depassement de capacité

  • Initiateur de la discussion Initiateur de la discussion treza88
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

treza88

XLDnaute Occasionnel
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 ou j'ai ajouté ++ devant et deriere la ligne.

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

Voici mon code:


Code:
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
 
Dernière édition:
Re : Erreur Depassement de capacité

Bonjour Treza 88 le forum
des lignes verticales, ce sont des colonnes, ou alors j'ai pas compris?
si c'est le cas oui c'est normal tu es sous 2003 et tu es limité à 256 colonnes, maintenant tu as combien de lignes dans chaque colonnes?
tu peux très bien avoir une deuxième rangée avec 256 colonnes en dessous???
a te relire à défaut de fichier
a+
papou🙂
 
Dernière édition:
Re : Erreur Depassement de capacité

Bonjour treza, Papou🙂

tu ne nous donnes pas toutes la procédure... on ne voit sans doute pas toutes les déclarations de variables... déclare celles qui servent à stocker des numéros de ligne ou de colonne en type "Long"...

bon après midi
@+
 
Re : Erreur Depassement de capacité

Bonjour Treza88,Paritec

Une autre erreur fréquente
Dim bColA As Integer "( Ne dépasse pas les 32787 ,en nombre)"
Utiliser dim bColA As Long pour 2147483647 nombre.


Bonjour Pierrot ,On s'est croisé.
Cordialement
 
Re : Erreur Depassement de capacité

Bonjour à vous tous et merci de vous interresser a mon cas

Je vais essayer de prendre dans l'ordre:

Paritec, mes donnés son bien situé sur des lignes et non des colonnes, seulement a chaque debut de ligne, j'ai un caractere alphabetique qui crois a chaque nouvelle ligne, ce qui fait que dans ma premiere colonne je n'ai qu'une liste alphabetique.

a;248,35
b;236;43
c;347;54
...


Pierrot93, je met la procedure entiere, mais je pense que l'essentiel etait dans ce que j'ai mis precedemment, et j'ai eu peur d'embrouiller avec la procedure complette.

Procedure complete:

Code:
Sub selectionTab()
Dim firstCell, lastCell, Zone As Range
Dim TestPair As Integer
TestPair = ActiveSheet.Index
If TestPair < 4 Or TestPair Mod 2 = 0 Or TestPair = Worksheets.Count Then
MsgBox "Sélectionnez une autre feuille pour l'exportation, celle ci n'est pas valide !!!"
Exit Sub
End If
Application.ScreenUpdating = False
'---- selection de la plage de donnée
'---- en ne selectionnant pas les cellules ne comportant que des formules
Set firstCell = Range("AC5")
Set lastCell = Range("W65536").End(xlUp)
Set Zone = Range(firstCell, lastCell)
For i = Zone.Count To 1 Step -1
If Zone.Cells(i) <> "" Then Exit For
Next
Set lastCell = Zone.Parent.Cells(Zone.Cells(i).Row, 23) ' 19 =Colonne S
Range(firstCell, lastCell).Copy
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 2
Range("B1").Select
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
'-------------------------------------------------------
Dim NomFichier As Variant
'NomFichier = "C:\Mes documents\aze.csv"
NomFichier = ThisWorkbook.Path & "\" & "aze.csv "
 
If NomFichier <> False Then
Application.DisplayAlerts = False
 
'----------------------------------------------------------
'Creation d'un fichier texte type .csv
 
Dim x, j, DernièreLigne, DernièreColonne
Application.ScreenUpdating = False
ActiveSheet.Range("A1").CurrentRegion.Select '*******
Set tbl = ActiveCell.CurrentRegion '*******
DernièreLigne = tbl.Rows.Count '*******
DernièreColonne = tbl.Columns.Count '*******
Cells(1, 1).Select
Open NomFichier For Output As #1
For x = 1 To DernièreLigne
Print #1, Cells(x, 1).Formula;
For j = 2 To DernièreColonne
Print #1, ";" + Cells(x, j).Formula;
Next j
Print #1, Cells(x, j + 1).Formula
Next x
Close #1
'-----------------------------------------------------------------
 
ActiveWorkbook.Close
Application.DisplayAlerts = True
Else
Exit Sub
End If
 
Application.ScreenUpdating = True
'-------------------------------------------------
' Demarrage de DebitPro avec activation d'importation
ChDrive "C"
ChDir "C:\Program Files\RozetUtil\DebitPro14"
Shell """C:\Program Files\RozetUtil\DebitPro14\debitpro.exe"""
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys "%f", True
SendKeys "i", True
Sleep 10
'SendKeys "{tab 2}", True
SendKeys " ", True
SendKeys "{tab 3}", True
SendKeys "~", True
Sleep 1
SendKeys NomFichier, True
SendKeys "~", True
Sleep 1
SendKeys "{tab 3}", True
SendKeys "~", True
End Sub

J'espere que ça vous aidera

Et enfin
Néné06, j'ai bien fait attention a cette variable qui etait auparavant as byte ce qui me bloquait un tout petit peu avant et je l'ai changé en integer ce qui ma debloqué un peu mais maintenant ce n'est plus le probleme du moins je pense.
 
Re : Erreur Depassement de capacité

Re, bonjour néné

je ne vois pas que la variable "st" soit déclarée... mais bon... préférable de déclarer toutes les variables au début de la procédure (apès la déclaration de sub)... déclares en "long" lignes et colonnes...
 
Re : Erreur Depassement de capacité

Bonsoir Tous
alors moi j'insiste mais bon à tord sans doute, mais si tu as
Code:
st = Cells(1, bColA).AddressLocal(False, False)
quand tu auras ton bcolA qui vaudra 257 il va lire sa valeur ou ? en dehors du PC ? si tu es sous 2003 ce que tu ne nous précises pas !!!!! (mais qui pour moi est évident, là aussi peut-être à tord)
a+
papou🙂
 
Dernière édition:
Re : Erreur Depassement de capacité

Oui je suis d'accord avec toi Paritec je sui bien sous excel 2002, je pensais que c'était affiché dans le message, 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.
Et donc tu a tout a fait raison d'insister.
Donc si c'est bien le probleme comment je peux faire pour créer ma liste alphabetique de plus de 256 caracteres?
 
Re : Erreur Depassement de capacité

Bonjour.
J'ai cette fonction qui me sert à restituer un entête de colonne en fonction de sa position,
mais qui est capable de nommer jusqu'à 702 élements d'un ensemble selon les même règles.
VB:
Function EntCol(ByVal N As Long) As String
N = N - 1
If N > 25 Then EntCol = Chr$(N \ 26 + 64) & Chr$(N Mod 26 + 65) Else EntCol = Chr$(N + 65)
End Function
À+
 
Re : Erreur Depassement de capacité

Bonjour Dranreb, merci pour ta fonction, mais il va falloir que je vois comment l'integrer dans ma procedure avec mon for each, je vais essayer de mon coté mais si tu as une idée ça me ferai avancer plus vite et moins galérer.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
830
Réponses
11
Affichages
785
Réponses
4
Affichages
870
Retour