olivthill | 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()
Dim i As Integer
Dim j As Integer
For i = 2 To 2743
j = 3
While j < 987
If ThisWorkbook.Sheets("Feuil2" ).Cells(4, i).Value _
= ThisWorkbook.Sheets("Feuil1" ).Cells(2, j).Value _
And ThisWorkbook.Sheets("Feuil2" ).Cells(4, i).Value <> "" Then
ThisWorkbook.Sheets("Feuil1" ).Cells(7, j).Value _
= ThisWorkbook.Sheets("Feuil2" ).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 ThisWorkbook.Sheets("Feuil2" ).Cells(4, i).Value _
= ThisWorkbook.Sheets("Feuil1" ).Cells(2, j).Value _
And ThisWorkbook.Sheets("Feuil2" ).Cells(4, i).Value <> "" _
And ThisWorkbook.Sheets("Feuil2" ).Cells(10, i).Value <> 0 Then
ThisWorkbook.Sheets("Feuil1" ).Cells(7, j).Value _
= ThisWorkbook.Sheets("Feuil2" ).Cells(10, i).Value
End If
Next j
Next i
End Sub |
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).
|