Extraction d'une plage en vba excel

Fermé
nani - 16 juin 2011 à 10:50
Ctesias Messages postés 724 Date d'inscription lundi 16 mai 2011 Statut Membre Dernière intervention 1 décembre 2011 - 17 juin 2011 à 10:12
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
A voir également:

4 réponses

ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié par ccm81 le 16/06/2011 à 14:42
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 < 180
If Sheets(1).Range("I" & i).Value <180 And Sheets(1).Range("I" & i).Value >= 120 Then 

2. pourquoi le & "" dans Range("I" & i & "").Value
Range("I" & i)
devrait suffire

bonne suite
1
merci ,je suis tellement stressé que j'ai pas fait attention :s mais pour que le résultats soit afficher dans la feuille 2 ????? je veux que la plage de résultat s'affiche a la feuille 2
merci bien :)
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié par ccm81 le 16/06/2011 à 20:26
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
0
dzl mais peux tu m'écrire le code complais :p car je suis perdu et merci encore une fois
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié par ccm81 le 17/06/2011 à 10:19
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
0
Ctesias Messages postés 724 Date d'inscription lundi 16 mai 2011 Statut Membre Dernière intervention 1 décembre 2011 36
17 juin 2011 à 10:12
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 
0