[Débutant]Modifier une Plage de Cellule en fonction d'une autre plage

Y compris Power BI, Power Query et toute autre question en lien avec Excel
L
Lovelypain
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 4 janvier 2019
Version d'Excel : 2010 FR

Message par Lovelypain » 4 janvier 2019, 15:14

Bonjour,

Débutant dans le domaine du VBA, j'aimerais pouvoir ajouter des données dans une plage de cellule en fonction d'une Note.
Par exemple :
Voici mon code que j'utilise actuellement qui marche seulement pour une cellule D3; car quand je tape Range("D3:D25") une erreur apparait alors. Comment faire pour qu'il marche aussi pour D4,D5...D12...D25. Je sais que je pourrais utiliser une formule Si, mais j'essaie d'apprendre le VBA 8-) .

Sub CommentaireNote()
Dim Note As String, Commentaire As String
Note = Range("D3")

If Note = "S" Then
Commentaire = "Le Top du top"
ElseIf Note = "A" Then
Commentaire = "Tres bon"
ElseIf Note = "B" Then
Commentaire = "Bon"
ElseIf Note = "C" Then
Commentaire = "Moyen"
ElseIf Note = "D" Then
Commentaire = "Pas top"
ElseIf Note = "E" Then
Commentaire = "Bidon"
Else
Commentaire = ""
End If

'Afficher commentaire
Range("E3") = Commentaire

End Sub

Merci d'avance pour vos réponses :)
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 3'698
Appréciations reçues : 265
Inscrit le : 26 janvier 2011
Version d'Excel : 2007

Message par Theze » 4 janvier 2019, 15:30

Bonjour,

En faisant de ta Sub une fonction perso :
Function CommentaireNote(Note As Range)
    
    Select Case Note.Value
    
        Case "S": CommentaireNote = "Le Top du top"
        Case "A": CommentaireNote = "Tres bon"
        Case "B": CommentaireNote = "Bon"
        Case "C": CommentaireNote = "Moyen"
        Case "D": CommentaireNote = "Pas top"
        Case "E": CommentaireNote = "Bidon"
        Case Else: CommentaireNote = ""
    
    End Select

End Function
Que tu utilises de cette façon en cellule E3 (ou toutes autres cellules de ton choix) :
=CommentaireNote(D3)
où ici D3 contient une lettre
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'566
Appréciations reçues : 154
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 4 janvier 2019, 15:36

Bonjour Lovelypain,

Tu dois réaliser une boucle de la ligne 3 à la ligne 25....
Donc
for i = 3 to 25
next i
Range("D3")
devient alors
Range("D"&i)
et
Range("E3")
devient alors
Range("E"&i)
.
Sub CommentaireNote()

Dim Note As String, Commentaire As String, i As Integer

For i = 3 To 25
    Note = Range("D" & i)
 If Note = "S" Then
    Commentaire = "Le Top du top"
 ElseIf Note = "A" Then
    Commentaire = "Tres bon"
 ElseIf Note = "B" Then
    Commentaire = "Bon"
 ElseIf Note = "C" Then
    Commentaire = "Moyen"
 ElseIf Note = "D" Then
    Commentaire = "Pas top"
 ElseIf Note = "E" Then
    Commentaire = "Bidon"
 Else
    Commentaire = ""
 End If

'Afficher commentaire
Range("E" & i) = Commentaire
Next i

End Sub
Cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
L
Lovelypain
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 4 janvier 2019
Version d'Excel : 2010 FR

Message par Lovelypain » 4 janvier 2019, 15:39

Ok je vois, je comprends la logique, Merci beaucoup :)
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'566
Appréciations reçues : 154
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 4 janvier 2019, 16:34

Re,

(Bonjour Theze, :pdm: )

@Lovelypain:
Merci pour ton retour,

Pour faire plaisir à jmd, bien que tu veuilles apprendre le vba, cela peut se faire sans, via formule....
Classeur1.xlsm
(21.97 Kio) Téléchargé 5 fois
Cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message