Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonjour à tous,

J'ai écrit cette petite macro qui consiste à copier les plages d'une feuille 2 ,dont les valeurs sont supérieures à une valeur entrée dans la cellule c17 de la feuille 1, dans la plage référencée de la feuille 1.

cependant, j'ai une erreur dans la condition If et je ne sais pas pourquoi !

 

Voici mon code :

 

Sub Slectionnerplage()

 

If Worksheets(Feuil1).Range("d7:d29").Value > Worksheets(Feuil1).Range("c17").Value Then

Worksheets(Feuil1).Range("d7:d30").Value = Worksheets(Feuil2).Range("d22:d45").Value

End If

 

End Sub

 

Si quelqu'un peut m'aider je l'en remercie vivement.

Posté(e) (modifié)

Salut,

juste une remarque avant de se plonger plus avant dans ta question :

moi, j'aurais mis worksheets("feuil2")...=worksheets("feuil1")...

la destination = la source et non l'inverse

 

ensuite, tu compares des choux et des carottes si on peut dire, ...range("D7:D29").value te donne un tableau et range("C17").value te donne une valeur

 

a minima, il faut extraire le max de ta plage ...range("D7:D29").value

 

pour ça, tu peux faire une fonction du genre

 

Function max(a)

max = 0

For Each x In a

If Abs(x) > max Then

max = x

End If

Next x

End Function

 

ensuite tu remplaces Worksheets(Feuil1).Range("d7:d29").Value par max(Worksheets(Feuil1).Range("d7:d29").Value )

et tu intervertis worksheets("feuil2")... et worksheets("feuil1")... et ça doit marcher :P

Modifié par korentin
Posté(e)

En fait, il faut que je compare chaque cellule du tableau de la feuille 2 avec le montant porté sur la cellule de la feuille 1. Si je prends le max, je ne pourrais pas comparer mon tableau à la valeur porté sur la cellule de la feuille 1, du moins je pense.

une fois cette opération accomplie et si la condition est respectée je voudrais copier ces valeurs dans un tableau de la feuille 1.

Ci joint mon fichier excel

 

Ceci est ma feuille 2

 

Journal Date N° facture Libellé Montant

ventes vn 101079 VN 803378 12082,01

08/01/2007 101080 16625,00

101081 VN 1201563 17580,75

101082 VN 222715 14768

101083 VN 141864 22365,01

101084 vn 783711 8709,00

09/01/2007 101085 9092,00

11/01/2007 101086 12128,00

12/01/2007 101087 6733,00

101088 vn 218977 12292,53

24/01/2007 101089 18479,82

101090 vn 1073107 20952,07

26/01/2007 av 1900087 -12750,05

101091 vn 759466 12750,05

31/01/2007 101092 16269,00

ventes vo 10/01/2007 201141 9700,01

av 290011 -10950,01

201142 vo 266055 10950,01

 

 

Ceci est ma feuille 1

 

 

Sélectionner les factures dont le montant est supérieur à : 9000

 

 

Journal Date N° facture Libellé Montant

ventes vn 101079 VN 803378

08/01/2007 101080

101081 VN 1201563

101082 VN 222715

101083 VN 141864

101084 vn 783711

09/01/2007 101085 ICI DOIT FIGURER LES

11/01/2007 101086 CELLULES DE LA FEUILLE

12/01/2007 101087 QUI RESPECTENT LA CONDITION

101088 vn 218977

24/01/2007 101089

101090 vn 1073107

26/01/2007 av 1900087

101091 vn 759466

31/01/2007 101092

ventes vo 10/01/2007 201141

av 2900111

201142 vo 266055

11/01/2007 201143

Posté(e) (modifié)
En fait, il faut que je compare chaque cellule du tableau de la feuille 2 avec le montant porté sur la cellule de la feuille 1. Si je prends le max, je ne pourrais pas comparer mon tableau à la valeur porté sur la cellule de la feuille 1, du moins je pense.

 

certes :P

il suffit de modifier la fonction en conséquence...

 

est ce que tu veux un blanc quand la condition n'est pas remplie ou rien?

je ferais qq chose comme ça :

 

Sub Slectionnerplage()

ligne = 1

 

Worksheets("Feuil1").Range("d7:d29").Select

For Each x In Selection

 

If x.Value > Worksheets("Feuil1").Range("c17").Value Then

Worksheets("Feuil2").Range("d" & ligne).Value = x

ligne=ligne+1

End If

 

Next x

 

End Sub

 

tu cales "ligne" en fonction de l'endroit où tu veux faire ta copie

Modifié par korentin
Posté(e)

Le problème semble avoir trouvé sa solution.

Ainsi, afin de signaler clairement à ceux qui ont un problème similaire qu'ils ont peut-être une solution toute trouvée (s'ils pensent à utiliser la fonction Recherche en indiquant le mot-clé "résolu" auparavant), et afin de signaler aux autres contributeurs qu'il est inutile de continuer à se creuser la tête sur le problème (à moins d'avoir des suppléments d'informations à apporter pour mieux comprendre ce qui posait problème), un modérateur a préfixé le titre du topic avec la mention [résolu].

Merci, à l'avenir, de bien vouloir prendre à votre charge cette mise à jour quand vous estimez que votre problème a été résolu de manière satisfaisante (et parallèlement, si le problème a disparu "mystérieusement", inutile d'induire les gens en erreur :P) Pour cela, p_edit.gif votre premier message :P

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...