Condition If sous VBA

goodguy1206

XLDnaute Nouveau
Bonjour,
je suis vraiment un noob en VBA,
et je pense que vous allez mettre 5secondes,
donc je viens vous demander de l'aide.

J'ai deux collonnes dans excel (onglet Array colonne U et I),
les valeurs sont le fruit d'un calcul (formule),
J'aimerais mettre une condition pour qu'elles ne dépassent pas X.
X étant la valeur d'une cellule d'un autre onglet.
Dans le cas ou elles dépasses, les remplacer par X.

En gros:
De Sheet2!E12 à Sheet2!E26, si >Sheet1!D15 alors =Sheet1!D15,
et meme principe pour l'autre colonne:
Sheet2!F12 à Sheet2!F26, si >Sheet1!D16 alors =Sheet1!D16,

Je voudrai faire ca proprement sous VBA,
plutot que d'avoir une longue formule dans une cellule.
Mais peut etre y a t'il une solution encore plus simple ?

Je vous joins le fichier pour que ce soit plus facile.

Merci pour vos eclairages
 

Pièces jointes

  • HD.xls
    16.5 KB · Affichages: 81
  • HD.xls
    16.5 KB · Affichages: 81
  • HD.xls
    16.5 KB · Affichages: 78

Efgé

XLDnaute Barbatruc
Re : Condition If sous VBA

Bonjour goodguy1206,
Pouvez vous envoyer un fichier avec des "explications" plus détaillées. Je m'y perd :
onglet Array colonne U et I
vous parlez de SHEET2 E12:F26 ?
X étant la valeur d'une cellule d'un autre onglet.
Quel onglet ?
De Sheet2!E12 à Sheet2!E26, si >Sheet1!D15 alors =Sheet1!D15,
et meme principe pour l'autre colonne:
Sheet2!F12 à Sheet2!F26, si >Sheet1!D16 alors =Sheet1!D16,
Alors là ??!! :eek:

Dans l'attente de vous lire
Cordialement
 

goodguy1206

XLDnaute Nouveau
Re : Condition If sous VBA

Bonjour, merci pour cette réponse rapide,
effectivement, c'est un peu confu.
Je vais faire de mon mieux,

J'ai une collonne dans excel (Sheet2!F12:F26),
les valeurs sont le fruit d'un calcul (formule),
J'aimerais mettre une condition pour qu'elles ne dépassent pas la valeur de la cellule Sheet1!D16.

Dans le cas ou elles dépasses, les remplacer par Sheet1!D16.

En gros:
De Sheet2!F12 à Sheet2!F26, si value>Sheet1!D16 alors value=Sheet1!D16,

Je voudrai faire ca proprement sous VBA,
plutot que d'avoir une longue formule dans une cellule.
Mais peut etre y a t'il une solution encore plus simple ?

J'espère que c'est plus compréhensible...
 

Efgé

XLDnaute Barbatruc
Re : Condition If sous VBA

Re,
Une proposition, à modifier suivant le fichier réel...
Code:
Sub Remplacer()
Sheets("Sheet2").Select
For i = 12 To 26
    If Cells(i, 6).Value > Sheets("Sheet1").Range("D16").Value Then
        Cells(i, 6).Value = Sheets("Sheet1").Range("D16").Value
    End If
Next i
End Sub
A noter que les valeurs de votre fichier exemple sont toutes égales a la cellule Sheet1!D16, donc à vérifier...
Cordialement
 

Pièces jointes

  • HD(2).xls
    25.5 KB · Affichages: 80

Efgé

XLDnaute Barbatruc
Re : Condition If sous VBA

RE,
Une solution macro complète....

Code:
Sub Remplacer()
Application.ScreenUpdating = False
Sheets("Sheet2").Select
For i = 12 To 26
    If Sheets("Sheet1").Range("D14").Value = "voltage" Then
        If Not Sheets("Sheet2").Cells(i, 5).Value / Sheets("Sheet2").Cells(i, 4).Value > Sheets("Sheet1").Range("D16").Value Then
            Cells(i, 6).Value = Sheets("Sheet2").Cells(i, 5).Value / Sheets("Sheet2").Cells(i, 4).Value
                Else
                    Cells(i, 6).Value = Sheets("Sheet1").Range("D16").Value
        End If
    End If
Next i
Application.ScreenUpdating = True
End Sub
Dites si cela vous va...
Cordialement
 

Pièces jointes

  • HD(4).xls
    38.5 KB · Affichages: 60
Dernière édition:

goodguy1206

XLDnaute Nouveau
Re : Condition If sous VBA

Bonjour,
Merci pour cette aide precieuse,
Dans le principe, c'est exactement ca que je voulais faire.
En pratique, j'aimerais me passer du bouton,
c'est a dire que la tâche soit faite automatiquement,
à chaque fois que les valeurs des cellules changent.
Pensez vous que c'est possible ?
 

Efgé

XLDnaute Barbatruc
Re : Condition If sous VBA

Bonjour goodguy1206,
La macro est dans le code la feuille 2. En changeant une valeur n'importe où dans la feuille, le calcul se fait avec "Entrée".
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Sheets("Sheet2").Select
For i = 12 To 26
    If Sheets("Sheet1").Range("D14").Value = "voltage" Then
        If Not Sheets("Sheet2").Cells(i, 5).Value / Sheets("Sheet2").Cells(i, 4).Value > Sheets("Sheet1").Range("D16").Value Then
            Cells(i, 6).Value = Sheets("Sheet2").Cells(i, 5).Value / Sheets("Sheet2").Cells(i, 4).Value
                Else
                    Cells(i, 6).Value = Sheets("Sheet1").Range("D16").Value
        End If
    End If
Next i
Application.ScreenUpdating = True
End Sub
Cordialement
 

Pièces jointes

  • HD(5).xls
    34 KB · Affichages: 74

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 352
Membres
103 824
dernier inscrit
frederic.marien@proximus.