Vba (excel) : Dépassement de capacité.

Usgpa -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Excusez-moi de vous déranger à nouveau mais ma fonction bug à cause d'un dépassement de capacité. Savez vous si je peux résoudre ou contourner ce problème ?

Dim Tableau1() As Integer
Dim x1 As Integer, y1 As Integer
Dim i1 As Integer, j1 As Integer

x1 = 1465
y1 = 119

ReDim Tableau1(2 To x1, 3 To y1)

For i1 = 2 To x1
For j1 = 3 To y1
Tableau1(i1, j1) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques").Cells(i1, j1) + Workbooks("Classeur Commun X").Sheets("Statistiques").Cells(i1, j1)
Next j1
Next i1

With Workbooks("Classeur Commun X.xls").Sheets("Statistiques")
.Range("C2:D01465") = Tableau1
End With
Range("C2:D01465").ClearContents

Merci d'avance pour le temps que vous consacrerez à mon problème.

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    regarde si

    DO1465 au lieu deD01465

    0
    1. Usgpa
       
      Merci, je n'avais pas remarqué cette erreur. Malheureusement, j'ai toujours mon problème de déassement de capacité.
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Essaies avec
      dim tableau1
      au lieu de
      Dim Tableau1() As Integer
      0
    3. Usgpa
       
      Il me signale désormais une incompatibilité de type pour la ligne :

      tableau(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j) + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j)
      0
    4. Usgpa
       
      en fait la procédure sur laquelle j'avais mon problème est résolue. C'est la suivante qui pose désormais problème.

      Dim tableau
      Dim x As Integer, y As Integer
      Dim i As Integer, j As Integer
      'ici x est la dernière ligne, y la dernière colonne
      x = 800
      y = 8
      'Redimensionne le tableau de la ligne 3 à x et de la 2ème col à la yème
      ReDim tableau(2 To x, 5 To y)
      'complète les valeurs du tableau par l'addition des cellules de la même plage sur 2 feuilles
      For i = 2 To x
      For j = 5 To y
      tableau(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j) + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j)
      Next j
      Next i
      'restitue les valeurs du tableau dans la feuil3
      With Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients")
      .Range("E2:H800") = tableau
      End With
      Range("E2:H800").ClearContents

      Avec un incompatibilité de type sur la ligne soulignée
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    peut-être qu'une autre manière de procéder avec 2 tableaux conviendrait ( et + rapide?); maquette très simple:

    Sub ccc()
    tablo_out = Range("A1:B5")
    tablo_in = Range("E1:F5")
    
    For cptr_y = 1 To 5
        For cptr_x = 1 To 2
            tablo_out(cptr_y, cptr_x) = tablo_out(cptr_y, cptr_x) + tablo_in(cptr_y, cptr_x)
        Next
    Next
    
    Range("J1:K5") = tablo_out 'destination finale changée pour visualiser l'essai
    End Sub
    0
    1. Usgpa
       
      Tableau2(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j) + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j)

      Maintenant, Vba me signale une incompatibilité de type dans cette ligne... avez vous une idée de ce dont il pourrait s'agir ?
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      là, non...la solution alternative que je t'ai proposée fonctionne mais je n'ai pas testé avec 2 classeurs... D'ailleurs je l'avais pondue après ton message précédent où te signalais déjà cette erreur

      désolé
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      re,
      pensé à çà en épluchant les patates...
      essaies en ajoutant la propriété "value" aux 2 cells(i,j)
      Tableau2(i, j) = Workbooks("Fichier Personnel X.xls").Sheets("Statistiques Clients").Cells(i, j).value + Workbooks("Classeur Commun X.xls").Sheets("Statistiques Clients").Cells(i, j).value
      0