Erreur 1004

fanein -  
fanein Messages postés 9 Statut Membre -
Bonjour à tous,
Je sais que le sujet à déjà été traité dans plusieurs forum mais je n'arrive pas a trouvé la bonne solution
J'ai rédigé une fonction VBA pour échanger 2 lignes sous une condition, pourtant le programme fonctionne pas tres bien suite à l'erreur 1004:"Erreur définie par l'application ou par l'objet"

Je vous montre mon programme ci-dessous:

[/contents/446-fichier-sub Sub] SwapRows(lRow1 As Long, lRow2 As Long)
Dim aTemp() As Variant
        aTemp() = ActiveSheet.Rows(lRow1).Value
        ActiveSheet.Rows(lRow1).Value = ActiveSheet.Rows(lRow2).Value
        ActiveSheet.Rows(lRow2).Value = aTemp
End Sub

Sub classeom()
Dim i As Long
Dim counter As Long
counter = 3
col = ActiveSheet.UsedRange.Columns.Count
Row = ActiveSheet.UsedRange.Rows.Count
For i = 3 To Row
    If Cells(i, 3) <> "<empty>" And Cells(i, 3) <> "" Then
        Call SwapRows(i, counter)
        counter = counter + 1
    End If
Next i
End Sub


Le programme est buggé à la ligne "Activesheet.rows(lRow2).value=aTemp", il est clairement que la ligne lRow1 est bien copié des valeurs dans lRow2 mais ça se passe pas pour le lRow2
En espérant de vos aides
Bonne journée

3 réponses

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

    dans ta déclaration de "atemp" enlève "() as variant"

    SwapRows(lRow1 As Long, lRow2 As Long)
    Dim aTemp
    aTemp = ActiveSheet.Rows(lRow1).Value


    Ton tableau comporte plus 65236 lignes ?

     Michel
    2
    1. fanein
       
      Salut Michel,
      merci pour ta réponse et la rapidité
      tu peux m'expliquer l'intérêt d'ajouter le variable Col as integer? car mon objectif est de échanger entièrement 2 lignes en fait :(
      j'ai modifié la déclaration de "atemp" mais il tombe tjs sur le même l'erreur.
      si il y a qqchose n'est pas très claire dans ma question, pardonne-moi pour le français, je suis en train de pratiquer :)
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      oui, je viens d'enlever Col dans post1
      mais tu travailles sur 16384 données ?
      0
    3. fanein
       
      Oui, le nombre de données est tellement grand, environ 300,000
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK :o)

      voici une photo de ma maquette essayée avec succès
      Option Explicit
      '----------------------------------------------------------------
      Sub SwapRows(lRow1 As Long, lRow2 As Long)
      Dim aTemp
      
      Application.screenupdating=False 'confort des yeux, rapidité
      With ActiveSheet
          aTemp = .Rows(lRow1).Value
          .Rows(lRow1).Value = .Rows(lRow2).Value
          .Rows(lRow2).Value = aTemp
      End With
      End Sub
      
      
      Sub ccmm()
          Call SwapRows(3, 8)
      End Sub


      Pourquoi avoir mis Col dans ta macro classom ?
      0
    5. fanein
       
      Michel,
      merci bien pour ta correction!
      Malheureusement, même si j'ai essayé de réduire le nombre de données, à partir d'un moment, l'erreur 1004 revient tjs, je te montre par les images ci dessous
      (j'avais mis le variable "col" pour traiter une partie de donnés avant, comme dans ce cas j'en ai plus besoin, je l'enleverai)
      0
  2. fanein Messages postés 9 Statut Membre 1
     
    Bonsoir Michel,

    Malgré ce qu'on a discute', jai finalement trouve' une solution, jai décidé de supprimer une partie de données et l'erreur revient plus, je comprends pas très bien mais clairement il y a un lien avec le nombre de données comme tu m'avais indiqué. merci beaucoup pour ton aide et bonne soirée :)
    1
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    JE T'AI DEMANDE LA FEUILLE DU CLASSEUR FORMAT EXCEL ET NON UNE PHOTO QUI ME SERT A RIEN, PHOTO EN PLUS SANS LES LETTRES DES COLONNES...
    0
    1. fanein Messages postés 9 Statut Membre 1
       
      Michel,
      ce n'est pas un photo, c'est un fichier Excel, tu peux meme le télécharger...
      0