VBA

Résolu/Fermé
flyersgoaler Messages postés 29 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 4 octobre 2016 - Modifié par pijaku le 19/04/2016 à 13:32
flyersgoaler Messages postés 29 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 4 octobre 2016 - 19 avril 2016 à 15:07
Bonjour,

Voici le code que j'ai créé pour afin de vérifier si mon fichier contient des erreurs. Je fais plusieurs vérifications de ce genre pour assurer la qualité des données :

If Range("E" & y) = "Rouge" Then
If Range("AG" & y).Value <> 0 Then
Sheets(4).Range("A1").Value = "Projet " & Range("B" & y) & Chr(32) & Range("AE" & y) & " : Rouge n'est pas la bonne couleur."
Sheets(4).Range("A1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End If


If Range("AK" & y) = "Soleil" Then
If Len(Range("AD" & y)) < 5 Then
Sheets(4).Range("A1").Value = "Projet " & Range("B" & y) & Chr(32) & Range("AE" & y) & " : Soleil est en erreur"
Sheets(4).Range("A1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End If



Mon problème est que puisque j'ai plusieurs vérifications de ce genre, ajouter le code en gras ci-haut alourdi et rend plus pénible la lecture du code. De ce fait, je voudrais savoir si c'était possible de "setter" x, par exemple, au code en gras afin de ne pas avoir à l'écrire toujours au long. En bref, ce que je voudrais, au lieu de :

Sheets(4).Range("A1").Value = "Projet " & Range("B" & y) & Chr(32) & Range("AE" & y) & " : Soleil est en erreur"
Sheets(4).Range("A1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove


avoir quelque chose qui pourrait plus ressembler à ceci :

Set Message = Sheets(4).Range("A1").Value = "Projet " & Range("B" & y) & Chr(32) & Range("AE" & y) & " 

Set Insertion = Sheets(4).Range("A1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Puis, pour chaque chose que je vérifie, le code ressemblerait à ceci : 
If Range("E" & y) = "Rouge" Then
If Range("AG" & y).Value <> 0 Then
Message :Rouge n'est pas la bonne couleur."
Insertion
End If
End If


If Range("AK" & y) = "Soleil" Then
If Len(Range("AD" & y)) < 5 Then
Message: Soleil est en erreur"
Insertion
End If
End If




Merci!

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
19 avril 2016 à 13:46
Bonjour,

Pour le message, tu peux utiliser une fonction personnalisée :
Private Function Message(Sujet As String, Ligne As Long) As String
    Select Case UCase(Sujet)
        Case "ROUGE"
            Message = "Projet " & Range("B" & Ligne) & Chr(32) & Range("AE" & Ligne) & " : Rouge n'est pas la bonne couleur."
        Case "SOLEIL"
            Message = "Projet " & Range("B" & Ligne) & Chr(32) & Range("AE" & Ligne) & " : Soleil est en erreur"
    End Select
End Function


Pour l'insertion, tu peux utiliser une Sub (pas très utile pour une seule ligne de code) :
Private Sub Insere()
    Sheets(4).Range("A1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub


Ton code d'appel devient donc :

If Range("E" & y) = "Rouge" Then
    If Range("AG" & y).Value <> 0 Then
        Sheets(4).Range("A1").Value = Message("Rouge", y)
        Insere
    End If
End If

If Range("AK" & y) = "Soleil" Then
    If Len(Range("AD" & y)) < 5 Then
        Sheets(4).Range("A1").Value = Message("Soleil", y)
        Insere
    End If
End If


A noter, tu peux utiliser AND dans ton test If.
Ainsi ton code d'appel devient :
If Range("E" & y) = "Rouge" And Range("AG" & y).Value <> 0 Then
    Sheets(4).Range("A1").Value = Message("Rouge", y)
    Insere
End If

If Range("AK" & y) = "Soleil" And Len(Range("AD" & y)) < 5 Then
    Sheets(4).Range("A1").Value = Message("Soleil", y)
    Insere
End If
1
flyersgoaler Messages postés 29 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 4 octobre 2016
19 avril 2016 à 15:07
Merci beaucoup!
0