Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème fonction If vba excel

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

A

avyrex1926

Guest
Bonjour à tous,

Dans ce code:
Code:
Dim i As Long, Cumlig As Long, Jour As String, ColJour As Range
Dim cel As Range, PlageTest, z

Sheets("Trancheur").Rows("3:1000").Delete
    'Première ligne d'affichage dans la feuille "Cumul de l'employé"
With Sheets(ComboBox13.Text)
    Cumlig = 3
    Jour = ComboBox14
    'Boucle à partir de la ligne 6 dans la feuille "Base de donnée"
    Set ColJour = .Range("E65536:Q65536").Find(Jour, LookIn:=xlValues)
    If Not ColJour Is Nothing Then
        For i = 6 To .Range("A" & Cells.Rows.Count).End(xlUp).Row
        'Si la valeur de la colonne A correspond au nom sélectionné
            If .Cells(i, 1) <> "" And .Cells(i, ColJour.Column) <> "" And .Cells(i, ColJour.Column) <> "0" And .Cells(i, ColJour.Column) <> "REGULIER" And .Cells(i, ColJour.Column) <> "VACANCE" And .Cells(i, ColJour.Column) <> "1JR_CSST" And .Cells(i, ColJour.Column) <> "ABS_M_NP" And .Cells(i, ColJour.Column) <> "ABS_NP" And .Cells(i, ColJour.Column) <> "ABS_M_NP" And .Cells(i, ColJour.Column) <> "ACC_CSST" And .Cells(i, ColJour.Column) <> "ACC_H_T" And .Cells(i, ColJour.Column) <> "ACT_GRACE" Then

                       
                'Copier les valeurs
                Sheets("Trancheur").Cells(Cumlig, 1).Value = .Cells(i, 1).Value
                Sheets("Trancheur").Cells(Cumlig, 2).Value = .Cells(i, 2).Value
                Sheets("Trancheur").Cells(Cumlig, 5).Value = .Cells(i, ColJour.Column).Value
                Sheets("Trancheur").Cells(Cumlig, 6).Value = .Cells(i + 1, ColJour.Column).Value
            'Ligne suivante pour l'affichage
            Cumlig = Cumlig + 1
            End If
            
        Next i
   
     End If
    Sheets("Trancheur").Range("E2") = Jour
End With

Je veux simplifier cette partie:
Code:
            If .Cells(i, 1) <> "" And .Cells(i, ColJour.Column) <> "" And .Cells(i, ColJour.Column) <> "0" And .Cells(i, ColJour.Column) <> "REGULIER" And .Cells(i, ColJour.Column) <> "VACANCE" And .Cells(i, ColJour.Column) <> "1JR_CSST" And .Cells(i, ColJour.Column) <> "ABS_M_NP" And .Cells(i, ColJour.Column) <> "ABS_NP" And .Cells(i, ColJour.Column) <> "ABS_M_NP" And .Cells(i, ColJour.Column) <> "ACC_CSST" And .Cells(i, ColJour.Column) <> "ACC_H_T" And .Cells(i, ColJour.Column) <> "ACT_GRACE" Then

Toute les résultats sont maintenant inscrit dans la feuille "Base de données" range ("O2:O50").

Comment modifier cette partie du code s.v.p.

Merci pour votre aide.
 
Dernière modification par un modérateur:
Re : Problème fonction If vba excel

Bonjour avyrex1926,

J'ai bien vu le code à simplifier.

que veux tu dire par :

Toute les résultats sont maintenant inscrit dans la feuille "Base de données" range ("O2:O50")

??

que toutes les valeurs à tester ("", "0", "VACANCE", "REGULIER", ...) ont été mises de O2 à O50 ?

si c'est ça, peut être :

Code:
If .Cells(i, 1).value <> "" And Application.worksheetfunction.countif(sheets("Base de données").range("O2:O50"), .Cells(i, ColJour.Column).value) = 0 Then
 
Re : Problème fonction If vba excel

Pas toute à fait.

Code:
If .Cells(i, 1) <> "" And .Cells(i, ColJour.Column) <> "" And .Cells(i, ColJour.Column) <> "0" And .Cells(i, ColJour.Column) <> "REGULIER" And .Cells(i, ColJour.Column) <> "VACANCE" And .Cells(i, ColJour.Column) <> "1JR_CSST" And .Cells(i, ColJour.Column) <> "ABS_M_NP" And .Cells(i, ColJour.Column) <> "ABS_NP" And .Cells(i, ColJour.Column) <> "ABS_M_NP" And .Cells(i, ColJour.Column) <> "ACC_CSST" And .Cells(i, ColJour.Column) <> "ACC_H_T" And .Cells(i, ColJour.Column) <> "ACT_GRACE" Then

Au lieu d'ajouter And .Cells(i, ColJour.Column) <> "REGULIER" , And .Cells(i, ColJour.Column) <> "VACANCE" , Dans la feuille base de données dans la colonne O, ce trouve tous le mots concerné: REGULIER, VACANCE ETC...
 
Re : Problème fonction If vba excel

j'AI modifié pour:

If .Cells(i, 1) <> "" And .Cells(i, ColJour.Column) <> "" And Application.worksheetfunction.countif(sheets("Base de données").range("O2:O50"), .Cells(i, ColJour.Column).value) = 0 Then

et ça fonctionne.

Merci pour ton aide
 
- 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
927
Réponses
15
Affichages
818
Réponses
2
Affichages
529
Réponses
1
Affichages
326
Réponses
4
Affichages
742
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
463
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…