Run-time error ? [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 18-08-2009 à 22:15:37
Petite remarque, ton J est trop grand excel a au maxi que 255 colonnes me semble donc cells(4, j) va planter.
Marsh Posté le 18-08-2009 à 23:54:52
Salut, alpachinois : sauf si 2007 ( 16384 colonnes x 2^20 lignes )
Marsh Posté le 19-08-2009 à 08:11:37
baka-rcl a écrit : Je suis en stage et débute en VBA (merci à mon école pour les cours de Java )... |
Java est quand même beaucoup plus utile et intéressant à connaître que VBA qui n'est vraiment pas compliqué et qui est très limité. Il ne doit pas y avoir beaucoup d'écoles qui font du VBA.
Mets ton code entre les balises [code=vb ] [/code ] (sans les espaces) ça sera plus lisible.
Dis nous également à quelle ligne ça plante et à quel moment (valeur de i et j) si l'info d'alpachinois ne résoud pas le problème.
Marsh Posté le 19-08-2009 à 09:46:31
Il vaut mieux connaitre plusieurs langages plutôt qu'un seul, mais cessons-là ce hors-sujet trollesque, et répondons plutôt à la question posée.
Voici une version légèrement corigée qui fonctionne :
Sub copie1() |
Le tiret de soulignement peret de répartir le code sur plusieurs ligne. c'est beaucoup plus lisible. Cela permet de voir qu'il y avait "And j = 1000" qui n'avait rien à faire là, alors que j'ai is en commentaire avec une apostrophe en début de ligne. J'ai aussi indenté le code, ce que les débutants négligent de faire alors que c'est important car cela améliore nettement la lisibilité et permet de mieux voir les erreurs et de mieux faire la mainenance du code.
J'ai rajouté "ThisWorkbook" parce que VBA me le demandait. J'ai changé "Sheet1" en "Feuil1", parce que j'ai une version française. Et voili, ça marche.
Remarque subsidiaire, pour les indices, au lieu de les fixer en dur, on utilise souvent des astuces comme de voir si la cellule devient vide, ou bien End(xlDown).
Marsh Posté le 18-08-2009 à 18:45:30
Salut,
Je suis en stage et débute en VBA (merci à mon école pour les cours de Java )...
J'aimerais programmer une macro qui me servirait a identifier 2 N° de séries identiques dans 2 worksheets différents et, lorsque c'est le cas, copier une cellule précise de l'une des worksheets dans l'autre. J'ai codé 2 macros mais aucune ne fonctionne (Run-Time Error 1004 Application-defined or object-defined error) :
Sub copie1()
Dim i As Integer
Dim j As Integer
For i = 2 To 2743
j = 3
While j < 987
If Sheets("Sheet2" ).Cells(4, i).Value = Sheets("Sheet1" ).Cells(2, j).Value And Sheets("Sheet2" ).Cells(4, i).Value <> "" Then
Sheets("Sheet1" ).Cells(7, j).Value = Sheets("Sheet2" ).Cells(10, i).Value And j = 1000
Else: j = j + 1
End If
Wend
Next i
End Sub
Sub copie2()
Dim i As Integer
Dim j As Integer
For i = 2 To 2743
For j = 3 To 987
If Sheets("Sheet2" ).Cells(4, i).Value = Sheets("Sheet1" ).Cells(2, j).Value And Sheets("Sheet2" ).Cells(4, i).Value <> "" And Sheets("Sheet2" ).Cells(10, i).Value <> 0 Then
Sheets("Sheet1" ).Cells(7, j).Value = Sheets("Sheet2" ).Cells(10, i).Value
End If
Next j
Next i
End Sub
Merci pour votre aide