Condition If sous VBA

  • Initiateur de la discussion Initiateur de la discussion goodguy1206
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

goodguy1206

Guest
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
    HD.xls
    16.5 KB · Affichages: 81
  • HD.xls
    HD.xls
    16.5 KB · Affichages: 81
  • HD.xls
    HD.xls
    16.5 KB · Affichages: 78
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à ??!! 😱

Dans l'attente de vous lire
Cordialement
 
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...
 
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

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

Dernière édition:
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 ?
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
6
Affichages
2 K
Navillus
N
C
Réponses
2
Affichages
1 K
C
S
Réponses
20
Affichages
7 K
sly.d
S
T
Réponses
6
Affichages
10 K
T
F
Réponses
10
Affichages
2 K
Flo300
F
R
Réponses
6
Affichages
5 K
ricardo512
R
Retour