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
A voir également:
- Extraction d'une plage en vba excel
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
- Si ou excel - Guide
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 < 180
2. pourquoi le & "" dans Range("I" & i & "").Value
bonne suite
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
re
comme tu as fait pour récupérer nb en y ajoutant nle nom/numéro de la feuille
et .... reste zen
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
bonne suite
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
merci bien :)