Vérification de conditions puis insertion d'un compteur
Fermé
noemie.der
Messages postés6Date d'inscriptionmardi 23 février 2016StatutMembreDernière intervention16 mars 2016
-
16 mars 2016 à 15:40
gbinforme
Messages postés14946Date d'inscriptionlundi 18 octobre 2004StatutContributeurDernière intervention24 juin 2020
-
16 mars 2016 à 22:47
Bonjour,
Je suis en train d'écrire un programme dans lequel je souhaiterais insérer un compteur lorsqu'une condition est vérifiée. Jusque là, rien de bien sorcier vous me direz. Je souhaite compter le nombre de lignes d la feuille Ligne qui sont copiées vers la feuille Feuil1. On copie une ligne si elle correspond aux critères (Nom, emplacement, date de création, date de modification, auteur/propriétaire) renseignés sur la Feuille Feuil1. Le problème est que plusieurs conditions renseignées peuvent être vérifiées en même temps (ex : Nom + date de modification). Je ne veux pas compter et copier la même ligne plusieurs fois. Est-ce que quelqu'un a déjà été dans une situation similaire et a trouvé une solution ?
Merci d'avance pour votre aide.
Sub LancerRecherche()
Dim MC1 As String
Dim MC2 As String
Dim MC3 As String
Dim T As String
Dim DCMin As Date
Dim DCMax As Date
Dim DMMin As Date
Dim DMMax As Date
Dim A As String
Dim k As Long
Dim j As Long
Dim c As Long
Worksheets("Feuil1").Activate
MC1 = Sheets("Feuil1").Range("B3").Value 'Récupère ce qui a été entré dans la case 'Mot-clé 1' et le stocke dans la variable MC1
MC2 = Sheets("Feuil1").Range("C3").Value 'Récupère ce qui a été entré dans la case 'Mot-clé 2' et le stocke dans la variable MC2
MC3 = Sheets("Feuil1").Range("D3").Value 'Récupère ce qui a été entré dans la case 'Mot-clé 3' et le stocke dans la variable MC3
T = Sheets("Feuil1").Range("B4").Value 'Récupère ce qui a été entré dans la case 'Type' et lestocke dans la variable T
DCMin = Sheets("Feuil1").Range("C5").Value 'Récupère ce qui a été entré dans la case 'Date de création min' et le stocke dans la variable DCMin
DCMax = Sheets("Feuil1").Range("E5").Value 'Récupère ce qui a été entré dans la case 'Date de création max' et le stocke dans la variable DCMax
DMMin = Sheets("Feuil1").Range("C6").Value 'Récupère ce qui a été entré dans la case 'Date de modification min' et le stocke dans la variable DMMin
DMMax = Sheets("Feuil1").Range("E6").Value 'Récupère ce qui a été entré dans la case 'Date de modification max' et le stocke dans la variable DMMax
A = Sheets("Feuil1").Range("B7").Value 'Récupère ce qui a été entré dans la case 'Auteur' et le stocke dans la variable A
c = 0
If Sheets("Feuil1").Range("B3") = "" And Sheets("Feuil1").Range("C3") = "" And Sheets("Feuil1").Range("D3") = "" And Sheets("Feuil1").Range("C5") = "" And Sheets("Feuil1").Range("E5") = "" And Sheets("Feuil1").Range("E5") = "" And Sheets("Feuil1").Range("C6") = "" And Sheets("Feuil1").Range("E6") = "" And Sheets("Feuil1").Range("B7") = "" Then
MsgBox "Veuilliez remplir au moins une case du tableau"
End If
Worksheets("Liste").Activate
i = Sheets("Liste").Range("I1").Value
For j = 1 To i 'j va parcourir la liste de tout les fichiers référencés précédemment
'MOTS-CLE
If Sheets("Liste").Range("A" & j).Value Like "*" & MC1 & "*" Then
k = 18 + j
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la k-ième ligne du tableau de résultat
c = c + 1
'TYPE
ElseIf Sheets("Liste").Range("B" & j).Value Like "*T" Then 'Détecte si le type du j-ème fichier est celui saisi dans les critères de recherche
k = 17 + j
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la case Type du tableu de résultats
Sheets(Feuil1).Range("B" & k).Value = T
c = c + 1
'DATE DE CREATION
ElseIf Sheets("Feuil1").Range("C5") <> "" Or Sheets("Feuil1").Range("E6") <> "" Then '/!\ Si une des deux dates n'est pas remplie
If DCMin >= DC Or DCMax <= DC Then
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la case Date de création du tableu de résultats
c = 1
End If
ElseIf Sheets("Feuil1").Range("C5") <> "" And Sheets("Feuil1").Range("E6") = "" Then 'Si uniquement la date min de création est renseignée
If DCMin >= DC Then
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la case Date de création du tableu de résultats
c = c + 1
End If
ElseIf Sheets("Feuil1").Range("E6") <> "" And Sheets("Feuil1").Range("C5") = "" Then 'Si uniquement la date max de création est renseignée
If DCMax <= DC Then
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la case Date de création du tableu de résultats
c = c + 1
End If
'DATE DE MODIFICATION
ElseIf Sheets("Feuil1").Range("C6") <> "" And Sheets("Feuil1").Range("E6") <> "" Then 'Si les deux dates sont renseignées
If DMMin >= DM Or DMMax <= DM Then
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la case Date de modification du tableu de résultats
c = c + 1
End If
ElseIf Sheets("Feuil1").Range("C6") <> "" And Sheets("Feuil1").Range("E6") = "" Then 'Si uniquement la date min de modification est renseignée
If DMMin >= DM Then
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la case Date de modification du tableu de résultats
c = c + 1
End If
ElseIf Sheets("Feuil1").Range("E6") <> "" And Sheets("Feuil1").Range("C6") = "" Then 'Si uniquement la date max de modification est renseignée
If DMMax <= DM Then
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":E" & k) 'Remplit la case Date de modification du tableu de résultats
c = c + 1
End If
'AUTEUR
ElseIf Sheets("Liste").Range("E" & j).Value Like A Then 'Détecte si l auteur du j-ème fichier est celui saisi dans les critères de recherche
k = 17 + i
Sheets("Liste").Range("A" & j & ":E" & j).Copy Sheets("Feuil1").Range("A" & k & ":G" & k) 'Remplit la case Auteur du tableu de résultats
c = c + 1
End If
Next
Feuil1.Cells(15, 2).Value = j 'Nombre de résultats trouvés
If c = 0 Then MsgBox "Aucun résultat ne correspond à votre recherche. Élargissez les recherches… (ex : supprimez des critères de recherche, rajoutez un auteur, augmenter la période…)"
Worksheets("Feuil1").Activate 'Affiche la feuille de résultats
End Sub
A voir également:
Echec de la vérification des conditions préalables pour la promotion du controleur