VBA pour Condition et Correspondance entre valeurs

cg1980

XLDnaute Occasionnel
Bonjour,
J’aimerais faire une macro qui inclut un montant (déterminé par une formule) si des dates sont passés.

Voici un example avec la ligne 3 de l’onglet Feuil2 avec « AT0000386198 Corp » comme identifiant. On retrouve ce code dans la colonne A de Feuil1. il faudra faire aller chercher des données dans l’onglet feuil 1 et feuil2 pour les lignes qui ont le meme code.(note les codes ne sont pas dans le meme ordre et la liste peut s’agrandir avec le temps)

Voici ce que j’aimerais faire :
(example l’onglet Feuil2 avec « AT0000386198 Corp)

Si colAI(Feuil2) >colF(feuil1) (il faut aller cherche en feuil1 la valeur
correspondant à AT0000386198 Corp)
Et Si colAI(Feuil2)>colAY(Feuil2) (pas grave si AY vide)

Alors calculer ColC*ColAC (Feuil2)
Ajouter ce montant calculé à la valeur dans N5(Feuil1)
Et copier AI(Feuil2) dans AY(feuil2)

Et tout ceci se fait pour AT0000386198 Corp. Il faut le faire pour chaque valeur dans colA(feuil2).
Merci de votre aide (j'ai bien envie de voir comment on fait ça)
 

Pièces jointes

  • Macro2.xls
    19.5 KB · Affichages: 58
  • Macro2.xls
    19.5 KB · Affichages: 61
  • Macro2.xls
    19.5 KB · Affichages: 60

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA pour Condition et Correspondance entre valeurs

Bonjour Cg, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
Dim ca As Double 'déclare la variable ca (CAlcul)
 
Set pl = Sheets("Feuil2").Range("A3:A" & Sheets("Feuil2").Range("A65236").End(xlUp).Row) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    'déinit la recherche
    Set r = Sheets("Feuil1").Columns(1).Find(cel.Value, , xlValues, xlWhole) 'recherche dans la colonne A de l'onglet "Feuil1" la valeur de la cellule cel
    If Not r Is Nothing Then 'condition 1 : si il existe au moins une occurrence
        'condition 2 : si la colonne AI de cel est supérieure à la colonne F de r et si la colonne AI de cel est supérieure à la colonne AY de cel
        If cel.Offset(0, 34).Value > r.Offset(0, 5).Value And cel.Offset(0, 34).Value > cel.Offset(0, 50) Then
            ca = CDbl(cel.Offset(0, 2)) * CDbl(cel.Offset(0, 28)) 'définit le calcul ca
            Sheets("Feuil1").Range("N5").Value = Sheets("Feuil1").Range("N5").Value + ca 'ajoute ca à la cellule N5 de "Feuil1"
            cel.Offset(0, 50).Value = cel.Offset(0, 34).Value 'col AY de cel prend la valeur de col AI de cel
        End If 'fin de la condition 2
    End If 'fin de la condition 2
Next cel 'prochaine cellule c el de la boucle
End Sub
 

cg1980

XLDnaute Occasionnel
Re : VBA pour Condition et Correspondance entre valeurs

Bonjour Robert,

Je travaille sur le meme fichier et je suis bloqué sur un point. Je me demandais si tu pouvais m'aider.
Les conditions sont les memes que précèdemment.cette partie du code ne change pas.
Dim cel As Range 'déclare la variable cel (CELlule)
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
Dim ca As Double 'déclare la variable ca (CAlcul)
Set pl = Sheets("Fontedati1").Range("A3:A" & Sheets("Fontedati1").Range("A65236").End(xlUp).Row) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
'déinit la recherche
Set r = Sheets("FonteMovimentazione1").Columns(1).Find(cel.Value, , xlValues, xlWhole) 'recherche dans la colonne A de l'onglet "Feuil1" la valeur de la cellule cel
If Not r Is Nothing Then 'condition 1 : si il existe au moins une occurrence
'condition 2 : si la colonne AI de cel est supérieure à la colonne F de r et si la colonne AI de cel est supérieure à la colonne AY de cel
If cel.Offset(0, 34).Value > r.Offset(0, 5).Value And cel.Offset(0, 34).Value > cel.Offset(0, 50)

Par contre les résultats sont différents et je ne sais vraiment pas comment faire.
Si on a ces conditions ci-dessus, alors
Il faut
1.prendre la date en AI(Feuil2) comme référence (15.07.10) (pour le AT0000386198 en question)
2.aller dans l'onlget Feuil3
3.aller dans la cellule CW qui est aligné avec la date 15.07.10 qui est dans la colonne CS. (donc dans notre cas on se place en CW117).
4.Il faut faire un copier collage valeur de la plage (CW115(fixe toujours) et CW 117 dans ce cas (15.07.10)
5.CW47(fixe)= (CW117(dans ce cas)-1)*CW47(ancienne valeur)
6.copier ai en az de feuil2 comme dans la précèdante macro

Merci beaucoup si tu peux m'aider
 

Pièces jointes

  • Macro date.xls
    31.5 KB · Affichages: 49
  • Macro date.xls
    31.5 KB · Affichages: 52
  • Macro date.xls
    31.5 KB · Affichages: 46

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA pour Condition et Correspondance entre valeurs

Bonsoir CG, bonjour le forum,

Désolé, je comprends rien ! Tu as renommé les onglets dans le code et pas dans le fichier. Tu aurais pu aussi placer la macro dans ton nouveau fichier...

Sinon, c'est couillon ton "Bonjour Robert" au début. Tu fermes la porte à tous les autres illustres participants de ce forum qui sont susceptibles de te donner des réponses bien meilleures que les miennes...
 
Dernière édition:

cg1980

XLDnaute Occasionnel
Re : VBA pour Condition et Correspondance entre valeurs

ok,desolé.

j'ai reposté dans le forum en essayant d etre plus clair(j espere que c'est le cas)

oui, je me rends compte que j'ai laissé le nom des onglets différents,pas très intelligent de ma part.encorre desolé
 

Discussions similaires

Statistiques des forums

Discussions
314 040
Messages
2 104 956
Membres
109 217
dernier inscrit
Yoda1960