VBA
Résolu
flyersgoaler
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
flyersgoaler Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
flyersgoaler Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
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 :
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 :
avoir quelque chose qui pourrait plus ressembler à ceci :
Merci!
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
Bonjour,
Pour le message, tu peux utiliser une fonction personnalisée :
Pour l'insertion, tu peux utiliser une Sub (pas très utile pour une seule ligne de code) :
Ton code d'appel devient donc :
A noter, tu peux utiliser AND dans ton test If.
Ainsi ton code d'appel devient :
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
flyersgoaler
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup!