Intégrer une variable

  • Initiateur de la discussion Epiard Cédric
  • Date de début
E

Epiard Cédric

Guest
Etant débutant en VBA, je cherche à selectionner et copier dans une autre feuille deux colonnes à partir d'une troisème colonne contient des chiffres.
ex:
Je voudrais que si G8 est supérieur à 15 ou inférieur à -15 que cela copie les valeurs contenues dans C8 et D8 dans une autre feuille.
En sachant que les lignes vont de 8 à 38.....

Le seul truc dont j'ai était capable c'est ca ...
If Range("G8").Value > 15 Then Range("C15:D15").Copy

Merci D'avance.... En espérant avoir été clair..
 
L

le Fnake

Guest
Salut,

voila ce que je propose, en supposant que tu ne veuilles marquer dans ta 2e feuille (nommée au hasard... Feuille2) que les valeurs qui ont répondu au critère :

Dim Ligne as Integer, i as integer
i=0
For Ligne=8 to 38 'parcours toutes les lignes
if Range("Feuille1!G"&Ligne).value>15 or Range("Feuille1!G"&Ligne).value<-15 Then
i=i+1
Range("Feuille2!A"&i)=Range("Feuille1!C"&Ligne).value
'mets en A1 la valeur de la colonne C si le test est validé
Range("Feuille2!B"&i)=Range("Feuille1!D"&Ligne).value
end if
next

En espérant t'avoir aidé

Fnake
 
E

Epiard Cédric

Guest
Ayant utilisé cette macro qui marche à merveille avec un chiffre fixé, j'ai essayé de l'adapter avec une variable.. Mia sle problème c'est que cela ne sélectione que les chiffres négatifs et pas les positif.. donc je me retrouve un peu couillon....

Voici le code .... Je comprend pas trop pourquoi ...
Merci d'avance..


Dim Mavary
Mavary = InputBox("Donnez la valeur Absolue de Variation des Chiffres qui vous intéresse")

' Condi Macro
' Macro enregistrée le 26/07/2004 par NRCO
'
Windows("tamponmacro.xls").Activate
Sheets("Feuil6").Activate
Dim Ligne As Integer, i As Integer
i = 1
For Ligne = 1 To 235 'parcours toutes les lignes
If Range("Feuil6!C" & Ligne).Value > Mavary Or Range("Feuil6!C" & Ligne).Value < -Mavary Then
i = i + 1
Range("Feuil4!A" & i) = Range("Feuil6!A" & Ligne).Value
'mets en A1 la valeur de la colonne C si le test est validé
Range("Feuil4!B" & i) = Range("Feuil6!B" & Ligne).Value
End If
Next
 
L

le Fnake

Guest
Salut

ben ca semble curieux en effet... Tu peux peut etre essayer en prenant la valeur absolue (je crois que la commande c'est ABS, à vérifier éventuellement) :
If abs(Range("Feuil6!C" & Ligne).Value) > Mavary Then

ou sinon, ptet ca :
If (Range("Feuil6!C" & Ligne).Value > Mavary Or Range("Feuil6!C" & Ligne).Value < -Mavary) Then
ou ca :
If ((Range("Feuil6!C" & Ligne).Value > Mavary) Or (Range("Feuil6!C" & Ligne).Value < -Mavary)) Then

Sur les 3 propositions, yen a bien une qui pourrait marcher avec un peu de chance. Par contre, pour la raison de fond, je sais pas trop; il est possible qu'il n'arrrive pas à distinguer les 2 tests ?

Bon Aprem
 
E

Epiard Cédric

Guest
Merci,
J'ai tout essayé, les trois ne fonctionne pas... et j'ai même essayé de voir si c'est pas le test > Mavary qui ne vas pas et la en fait il ne me ressort rien du tout
la condition dans ce cas :
If Range("Feuil6!D" & Ligne).Value > Mavary Then
donc le problème vient de là ... mais ..bon quoi comment...
bizarre....
 
E

Epiard Cédric

Guest
Ben je vais répondre à ma propre question... cela ne prenait pas en compte ma variable car je n'avis pas écrit
Dim As Integer.. je l'ai mis au pif mais maintenant cela marche, je ne sais pas vraiment piurquoi maisca marche.... merci encore
 
L

le Fnake

Guest
oui c'est ce que je me disais aussi. ton Mavary etait de type string et le Range.value retourne ici un double.
Par contre, "-Mavary" devait etre automatiquement converti en double (-"15" ca veut rien dire, -15 oui), alors que lorsque tu fais le test avec "Mavary", il compare un double avec un string, d'ou échec (16>"15", c'est faux).
Ah la la, ces petits rien qui font tout... Enfin l'essentiel est d'y etre arrivé finalement !
 

Discussions similaires

Statistiques des forums

Discussions
312 243
Messages
2 086 550
Membres
103 245
dernier inscrit
gdesign