Extraction d'une plage en vba excel

nani -  
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

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. nani
       
      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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. nani
       
      dzl mais peux tu m'écrire le code complais :p car je suis perdu et merci encore une fois
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  4. Ctesias Messages postés 786 Statut Membre 36
     
    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