Extraction d'une plage en vba excel
nani
-
Ctesias Messages postés 786 Statut Membre -
Ctesias Messages postés 786 Statut Membre -
Bonjour,
Je cherche à copier une plage d'un onglet dans une zone dans autre onglet par code vba .
j'essayé de utiliser l SQl mais sans résultat , cette sélectionne et sous un critère le champs client doit être entre 120 et 180. mon but ce de extraire ces ligne dans une nouvelle feuille
mon code:
for i=1 to 1000
If Sheets(1).Range("I" & i).Value >180 And Sheets(1).Range("I" & i).Value <= 120 Then
MsgBox (Sheets(1).Range("I" & i).Value) ' pour chaque valeur trouver le programme l'affiche dans un message
nb = Range("I" & i & "").Value
Sheets(1).Range("I" & i).Select
Range("C" & j & "").Value = nb
End If
next i
Je cherche à copier une plage d'un onglet dans une zone dans autre onglet par code vba .
j'essayé de utiliser l SQl mais sans résultat , cette sélectionne et sous un critère le champs client doit être entre 120 et 180. mon but ce de extraire ces ligne dans une nouvelle feuille
mon code:
for i=1 to 1000
If Sheets(1).Range("I" & i).Value >180 And Sheets(1).Range("I" & i).Value <= 120 Then
MsgBox (Sheets(1).Range("I" & i).Value) ' pour chaque valeur trouver le programme l'affiche dans un message
nb = Range("I" & i & "").Value
Sheets(1).Range("I" & i).Select
Range("C" & j & "").Value = nb
End If
next i
4 réponses
-
bonjour
1. il y a un pb avec ta condition
si a>180 et a<=120 alors ...
qui est toujours fausse
il te faut écrire pour vérifier que 120 <= a < 180If Sheets(1).Range("I" & i).Value <180 And Sheets(1).Range("I" & i).Value >= 120 Then
2. pourquoi le & "" dans Range("I" & i & "").ValueRange("I" & i)devrait suffire
bonne suite -
re
comme tu as fait pour récupérer nb en y ajoutant nle nom/numéro de la feuille
sheets(2).Range("C" & j).Value = nb
et .... reste zen -
re
un exemple de code
RQ1. ici, comme je ne sais pas ce que représente j
sheets(2).Range("C" & j).Value = nb
j'ai supposé que dans la feuille 2 tu voulais récupérer les valeurs dans la colonne C à partir de la ligne li2deb, les unes en dessous des autres
RQ2. les variables finissant par 1 concernent la feuille 1 et celles contenant 2 ...
pour les variables utilises des identificaterurs qui "parlent" (li pour ligne , ...)
RQ3. tu as intérêt a déclarer tes variables (option explicit t'obligera a le faire)
RQ4. j'ai attaché le code a un bouton, mais tu peux l'affecter à une macro
Option Explicit Private Sub CommandButton1_Click() Const li2deb = 1 Dim li1 As Long, li2 As Long Dim nb li2 = li2deb For li1 = 1 To 1000 If Sheets(1).Range("I" & li1).Value < 180 And Sheets(1).Range("I" & li1).Value >= 120 Then MsgBox (Sheets(1).Range("I" & li1).Value) nb = Range("I" & li1).Value Sheets(2).Range("C" & li2).Value = nb li2 = li2 + 1 End If Next li1 End Sub
bonne suite -
Salut! Essais ca:
for i=1 to 1000 If Sheets(1).Range("I" & i).Value >180 And Sheets(1).Range("I" & i).Value <= 120 Then MsgBox (Sheets(1).Range("I" & i).Value) ' pour chaque valeur trouver le programme l'affiche dans un message nb = Range("I" & i & "").Value Sheets(1).Range("I" & i).Select selection.copy Sheets("2").Activate Range("I" & i).Select Selection.paste Range("C" & j & "").Value = nb End If next i