• Initiateur de la discussion Initiateur de la discussion ptite_linda
  • 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 !

P

ptite_linda

Guest
Bonjour,
je suis débutante "au plus bas niveau".
Voilà ce que je veux faire : par exemple "si la valeur de ma cellule = 1 alors on la remplace par la valeur contenue dans une autre cellule sur une autre feuille."
voila comment j'ai écrit ça (i : la ligne / augm : nom de la feuille où je vais chercher mes valeurs.)

Public Sub pompes1()
'STOCK MAGASIN 1 MODIF DES COÛTS ET QUANTITÉS


Dim i As Long 'LIGNE

Sheets("POMPES1").Activate

For i = 14 To 509

'SI QUANTITÉ EST VIDE ALORS QUANTITÉ VIDE
If Cells(i, 3).Value = "" Then Cells(i, 3).Value = ""


'SI LA QUANTITÉ EST SUP OU = A 9 ON LA REMPLACE
If Cells(i, 3).Value <= 9 Then
If Cells(i, 3).Value = 1 Then Cells(i, 3).Value = Range("augm!G19")
If Cells(i, 3).Value = 2 Then Cells(i, 3).Value = Range("augm!G21")
If Cells(i, 3).Value = 3 Then Cells(i, 3).Value = Range("augm!G23")
If Cells(i, 3).Value = 4 Then Cells(i, 3).Value = Range("augm!G25")
If Cells(i, 3).Value = 5 Then Cells(i, 3).Value = Range("augm!G27")
If Cells(i, 3).Value = 6 Then Cells(i, 3).Value = Range("augm!G29")
If Cells(i, 3).Value = 7 Then Cells(i, 3).Value = Range("augm!G31")
If Cells(i, 3).Value = 8 Then Cells(i, 3).Value = Range("augm!G33")
If Cells(i, 3).Value = 9 Then Cells(i, 3).Value = Range("augm!G35")
If Cells(i, 3).Value = 0 Then Cells(i, 3).Value = Range("augm!G17")


le problème c'est qu'une fois que la 1ère condition est vérifiée ça passe à la condition d'en dessous alors que je veux sortir de la boucle et passer au i suivant

Quelle erreur je fais?
Quelle syntaxe dois-je utiliser?
 
Re : besoin d'aide! svp

Bonjour linda,

il vaudrait mieux pour toi dans ce cas utiliser la syntaxe

for i = 14 to ...
select case cells(i,3)
case "" : cells(i,3) = ""
case 0 : cells(i,3) = sheets("maFeuille").range("maCellule")
end select
next i

Bertrand
 
Re : besoin d'aide! svp

Salut ptite_linda,

Soit tu modifie le code en rajoutant pour chacunde tes If un Exit for :
'SI LA QUANTITÉ EST SUP OU = A 9 ON LA REMPLACE
If Cells(i, 3).Value <= 9 Then
If Cells(i, 3).Value = 1 Then

Cells(i, 3).Value = Range("augm!G19")
Exit For
End If
If Cells(i, 3).Value = 2 Then

Cells(i, 3).Value = Range("augm!G21")
Exit For
End If
'...


Soit tu met des If imbriqué (tu peux également laissé le Exit Sub):
'SI LA QUANTITÉ EST SUP OU = A 9 ON LA REMPLACE
If Cells(i, 3).Value <= 9 Then
ElseIf Cells(i, 3).Value = 1 Then

Cells(i, 3).Value = Range("augm!G19")
ElseIf Cells(i, 3).Value = 2 Then
Cells(i, 3).Value = Range("augm!G21")

'...


Le problème avec les If c'est le problème auquel tu es confronté, toutes les conditions doivent être vérifiées.

Je te conseil plutot l'utilisation de Select Case, ce qui donnerait quelque chose du genre :
'SI LA QUANTITÉ EST SUP OU = A 9 ON LA REMPLACE
If Cells(i, 3).Value <= 9 Then
Select Case Cells(i, 3).Value
Case 1
Cells(i, 3).Value = Range("augm!G19")
Case 2
Cells(i, 3).Value = Range("augm!G21")
Case 3
Cells(i, 3).Value = Range("augm!G23")
'...
End If


@+
 
Re : besoin d'aide! svp

Bonsoir Ptite_Linda, bonsoir Bertrand, bonsoir Romain 🙂

Il y a également cette possibilité en utilisant la fonction Evaluate :

Code:
[SIZE=1][FONT=Courier New][COLOR=blue]Public Sub[/COLOR] pompes1()
[COLOR=green]'STOCK MAGASIN 1 MODIF DES COÛTS ET QUANTITÉS[/COLOR]
[COLOR=blue]Dim[/COLOR] i [COLOR=blue]As Long[/COLOR] [COLOR=green]'LIGNE[/COLOR]
[COLOR=blue]Dim[/COLOR] Valeur [COLOR=blue]As String[/COLOR] [COLOR=green]' Contenu texte de Cells(i, 3)[/COLOR]
 
  Sheets("POMPES1").Activate
 
  [COLOR=blue]For[/COLOR] i = 14 [COLOR=blue]To[/COLOR] 509
 
    Valeur = Cells(i, 3).Text
    [COLOR=green]'SI LA QUANTITÉ EST [B]INF[/B] OU = A 9 ON LA REMPLACE[/COLOR]
    [COLOR=blue]If[/COLOR] Valeur [COLOR=blue]Like[/COLOR] "[0-9]" [COLOR=blue]Then[/COLOR]
      Cells(i, 3) = Evaluate("augm!G" & Valeur * 2 + 17)
    [COLOR=blue]End If[/COLOR]
 
  [COLOR=blue]Next[/COLOR] i
[COLOR=blue]End Sub[/COLOR][/FONT][/SIZE]

C'est juste une troisième façon de procéder 😉 😛

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

Réponses
5
Affichages
914
Réponses
2
Affichages
528
Réponses
15
Affichages
791
Réponses
8
Affichages
784
Réponses
4
Affichages
735
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
7
Affichages
483
Retour