Modification du code VBA
Aide à la modification du code vba
Bonjour..Je suis confronté à un problème lors de l'exécution du code, les colonnes M, O et N sont vidées même si la plage de vidage est spécifiée dans cette ligne. En couleur rouge. je ne sais pas pourquoi!!! Y at-il une solution à ce problème. Ou un autre code qui fait la même chose.
sh.Range("C10:L1000").ClearContents
Sub derc()
Dim arr As Variant
Dim temp As Variant
Dim cr As Variant
Dim lr As Long
Dim i As Long
Dim j As Long
Dim C As Long
Dim WS As Worksheet
Dim sh As Worksheet
Dim myArray, targt, targt2
Set Main = Sheets("sh1")
Set sh = Sheets("sh2")
targt = sh.Range("M5").Value & "*"
targt2 = sh.Range("M6").Value & "*"
'targt = "aa*"
'targt2 = "mm*"
sh.Range("C10:L1000").ClearContents
lr = Main.Cells(Rows.Count, 4).End(xlUp).Row
arr = Main.Range("A10:R" & lr).Value
ReDim temp(1 To UBound(arr, 1), 1 To UBound(arr, 2))
cr = Array(2, 4, 5, 7, 9, 10, 11, 12, 15)
j = 1
For i = LBound(arr, 1) To UBound(arr, 1)
'If arr(i, Like targt & "*" _
And arr(i, 89) Like targt2 & "*" Then
temp(j, 1) = j
For C = LBound(cr) To UBound(cr)
temp(j, C + 2) = arr(i, cr(C))
Next C
j = j + 1
Next i
With sh
.Range("C10").Resize(j - 1, UBound(temp, 2)).Value = temp
End With
End Sub
Bonjour Arwasoha,
Avec un fichier ... ce serait plus facile ...
Quand tu veux nous soumettre du code ... s.t.p. utilise le bouton </> et colle le code dans la fenêtre qui se présente ... merci de ta coopération ...
Est-ce que tu as tenté un pas-à-pas (touche F8) sur le code afin de voir en même temps ce qui se passe dans la feuille ??
ric
Merci beaucoup pour l'aide. J'ai créé ce code qui remplit l'objectif mais il est très lent Y a-t-il un bogue qui peut être corrigé
Sub mh()
Dim i As Integer
Application.ScreenUpdating = False
Sheets("data").Range("c10:l100").ClearContents
Sheets("saad").Select
lrow = Sheets("saad").Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lrow + 10
Sheets("saad").Select
Range("b" & i).Copy
Sheets("data").Select
Range("d" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("d" & i).Copy
Sheets("data").Select
Range("e" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("e" & i).Copy
Sheets("data").Select
Range("f" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("g" & i).Copy
Sheets("data").Select
Range("g" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("i" & i).Copy
Sheets("data").Select
Range("h" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("l" & i).Copy
Sheets("data").Select
Range("k" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("j" & i).Copy
Sheets("data").Select
Range("i" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("k" & i).Copy
Sheets("data").Select
Range("j" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Select
Range("o" & i).Copy
Sheets("data").Select
Range("l" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
llrow = llrow + 1
Next
End SubJe suis désolé, je ne sais toujours pas comment télécharger des fichiers sur le site
bonjour,
une proposition
Sub aargh()
Dim i As Long
Application.ScreenUpdating = False
With Sheets("saad")
Sheets("data").Range("c10:l100").ClearContents '????effacer la plage C10:L100 ???? pourquoi à partir de la ligne 10 et pas la ligne 1
lrow = .Cells(Rows.Count, 2).End(xlUp).Row
frt = Split("B,D,E,G,I,L,J,K,O", ",") ' colonne source
tot = Split("D,E,F,G,H,K,I,J,L", ",") 'colonne de destination
For i = LBound(frt) To UBound(frt)
.Range(frt(i) & "1:" & frt(i) & lrow).Copy Sheets("Data").Range(tot(i) & "1") 'copie la colonne de la ligne 1 à la ligne lrow
Next i
End With
End SubTrès bien. Une dernière question, s'il vous plaît, comment puis-je ajouter une séquence automatique dans la colonne c
bonsoir,
une adaptation du code pour y introduire la séquence.
Sub aargh()
Dim i As Long
Application.ScreenUpdating = False
With Sheets("saad")
Sheets("data").Range("c10:l100").ClearContents
lrow = .Cells(Rows.Count, 2).End(xlUp).Row
frt = Split("B,D,E,G,I,L,J,K,O", ",") ' colonne source
tot = Split("D,E,F,G,H,K,I,J,L", ",") 'colonne de destination
For i = LBound(frt) To UBound(frt)
.Range(frt(i) & "1:" & frt(i) & lrow).Copy Sheets("Data").Range(tot(i) & "1") 'copie la colonne de la ligne 1 à la ligne lrow
Next i
End With
'Sheets("data").Range("C1:C" & lrow) = Application.Evaluate("=row(A1:A" & lrow & ")")
With Sheets("data")
.Range("C1") = 1
.Range("C2") = 2
.Range("C1:C2").AutoFill .Range("C1:C" & lrow)
End With
End SubBonjour Arwasoha, h2so4, le forum,
h2so4 te donne un solution de type "Formule 1"...
Mais basé sur ton code ... juste en enlevant les .Select ... déjà l'on a un "Honda Civic Si" ...
Sub mh()
Dim i As Integer
Application.ScreenUpdating = False
Sheets("data").Range("c10:l100").ClearContents
Sheets("saad").Activate '' << pour les feuilles, utilise .Active pas le Select
lrow = Sheets("saad").Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lrow + 10
Sheets("saad").Range("b" & i).Copy
Sheets("data").Range("d" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
Sheets("saad").Range("d" & i).Copy
Sheets("data").Range("e" & llrow + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme
'...
'...
'...ric