Problèmes de boucles : Trop de Critères ??

Herlay

XLDnaute Junior
Bonjour le Forum,

Je cherche le moyen de modifier les valeurs de plusieures cellules suivant plusieures conditions : Le cas est une augmentation de tarifs suivant la famille des articles (et de déterminer si c'est en fixe ou en %).
Dans le fichier joint, il s'agit de renseigner par famille A,B,C .... l'augmentation, et de l'appliquer à tous les articles de cette famille en Colonne C.
J'ai écrit un petit code Vba, mais j'ai une erreur "91", et j'ai l'impression de me perdre dans la conception des boucles.
Merci pour votre aide.
Herlay
 

Pièces jointes

  • augmentation Tarif.xls
    46 KB · Affichages: 61

ROGER2327

XLDnaute Barbatruc
Re : Problèmes de boucles : Trop de Critères ??

Bonjour Herlay
Déclarer la variable K comme Variant et non comme Range devrait remettre les choses en ordre...​
ROGER2327
#3704


Mercredi 4 Gidouille 137 (Sainte Tripe, républicaine, SQ)
30 Prairial An CCXVIII
2010-W24-5T12:31:51Z
 

job75

XLDnaute Barbatruc
Re : Problèmes de boucles : Trop de Critères ??

Bonjour Herlay, salut Roger,

Pour l'évolution des tarifs, mettre les cellules au format Pourcentage s'il s'agit d'augmentations en pourcents, sinon les mettre au format Standard.

Cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub CommandButton1_Click()
Dim derlig As Integer, i As Integer, lettre As String, augmentation As Range
Application.ScreenUpdating = False
Range("D2:D65536").ClearContents
derlig = Range("J4").End(xlDown).Row 'ligne de la dernière date
For i = 2 To Range("C65536").End(xlUp).Row
  lettre = Application.VLookup(Cells(i, "E"), Range("G:H"), 2, 0)
  Set augmentation = Cells(derlig, Application.Match(lettre, Rows(4), 0))
  If augmentation.Text Like "*%" Then 'si l'augmentation est un pourcentage
    Cells(i, "D") = Cells(i, "C") * (1 + augmentation)
  Else
    Cells(i, "D") = Cells(i, "C") + augmentation
  End If
Next
End Sub

Les nouveaux prix s'inscrivent en colonne D, mais on peut aussi écraser la colonne C...

A+
 

Pièces jointes

  • augmentation Tarif(1).xls
    41.5 KB · Affichages: 53

job75

XLDnaute Barbatruc
Re : Problèmes de boucles : Trop de Critères ??

Re,

Si l'on préfère on peut utiliser le format monétaire en €uros :

Code:
Private Sub CommandButton1_Click()
Dim derlig As Integer, i As Integer, lettre As String, augmentation As Range
Application.ScreenUpdating = False
Range("D2:D65536").ClearContents
derlig = Range("J4").End(xlDown).Row 'ligne de la dernière date
For i = 2 To Range("C65536").End(xlUp).Row
  lettre = Application.VLookup(Cells(i, "E"), Range("G:H"), 2, 0)
  Set augmentation = Cells(derlig, Application.Match(lettre, Rows(4), 0))
  If [COLOR="Red"]augmentation.Text Like "*€"[/COLOR] Then 'si l'augmentation est en euros
    Cells(i, "D") = Cells(i, "C") + augmentation
  Else 'sinon c'est un pourcentage
    Cells(i, "D") = Cells(i, "C") * (1 + augmentation)
  End If
Next
End Sub

A+
 

Pièces jointes

  • augmentation Tarif(2).xls
    42.5 KB · Affichages: 56

Herlay

XLDnaute Junior
Re : Problèmes de boucles : Trop de Critères ??

ReBonjour le Forum, Job75 et ROGER2327,

MErci à vous deux pour vos réponses, c'est exactement ce que je cherchais, je vois que le code à été très raccourci et il est très efficace.

Merci à vous deux.

Herlay
 

Discussions similaires

Réponses
5
Affichages
467
Compte Supprimé 979
C

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson