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

Petit problème vba avec des conditions et la formule "For Each C in"

JEJSLY

XLDnaute Nouveau
Bonjour à tous,

Je suis tout débutant en VBA, et j'ai un petit problème avec les conditions et la formule "For Each C in".

Voila mon souci:
Dans un classeur1, j'ai plusieurs feuilles liés et différentes macros, l'une de ces macro doit vérifier dans un autre classeur (archives) si des enregistrements existent et dans certaines conditions, lancer d'autres macro, ou avertir l'utilisateur avec des MsgBox.

J'ai commencé à coder cette macro, mais bien évidemment cela ne fonctionne pas.

Je montre le code quand même, en espérant que quelqu'un pourra m'aider à le corriger.
Code:
Sub Verifdoublon()

    Dim Lieu As String
    Dim Colp As String
    Dim Jour As Long
    Dim Soirée As String
    Dim Début As Long
    Dim Fin As Long
    Lieu = Workbooks("Classeur1.xlsm").Sheets("Archives").Range("D2").Value
    Colp = Workbooks("Classeur1.xlsm").Sheets("Archives").Range("K2").Value
    Jour = Workbooks("Classeur1.xlsm").Sheets("Archives").Range("C2").Value
    Soirée = Workbooks("Classeur1.xlsm").Sheets("Archives").Range("I2").Value
    Début = Workbooks("Classeur1.xlsm").Sheets("Archives").Range("G2").Value
    Fin = Workbooks("Classeur1.xlsm").Sheets("Archives").Range("H2").Value
    
' On vérifie si le même enregistrement éxiste déjà dans les archives
    Windows("Archives.xlsb").Activate
    Sheets("Archives").Select
    
    Dim co As Boolean
    Dim jo As Boolean
    Dim li As Boolean
    Dim so As Boolean
    Dim dé As Boolean
   
    Dim Plagecolp As Range
    Set Plagecolp = Range("K2:K65536").SpecialCells(xlCellTypeVisible)
    For Each C In Plagecolp
    If C Like Colp Then
    co = True
    End If
   
    Dim Plagejour As Range
    Set Plagejour = Range("C2:C65536").SpecialCells(xlCellTypeVisible)
    For Each C In Plagejour
    If C Like Jour Then
    jo = True
    End If
    
    Dim Plagelieu As Range
    Set Plagelieu = Range("D2:D65536").SpecialCells(xlCellTypeVisible)
    For Each C In Plagelieu
    If C Like Lieu Then
    li = True
    End If

    Dim Plagesoirée As Range
    Set Plagesoirée = Range("I2:I65536").SpecialCells(xlCellTypeVisible)
    For Each C In Plagesoirée
    If C Like Soirée Then
    so = True
    End If

    Dim Plagedébut As Range
    Set Plagedébut = Range("G2:G65536").SpecialCells(xlCellTypeVisible)
    For Each C In Plagedébut
    If C Like Début Then
    dé = True
    End If
    
    
    If co = True And jo = True And dé = True Then
    If MsgBox.Show("1° information", MsgBoxStyle.YesNo Or MsgBoxStyle.Exclamation) = MsgBoxResult.Yes Then
'On archive le nouvel enregistrement
    Call archiver
    Else
     Windows("Classeur1.xlsm").Activate
     Sheets("CONSOLE").Select
     Range("C3").Select
    Exit Sub
    End If
    End If
    
    If so = True And jo = True And li = True Then
    If MsgBox.Show("2° information", MsgBoxStyle.YesNo Or MsgBoxStyle.Exclamation) = MsgBoxResult.Yes Then
'On archive le nouvel enregistrement
    Call archiver
    Else
     Windows("Classeur1.xlsm").Activate
     Sheets("CONSOLE").Select
     Range("C3").Select
    Exit Sub
    End If
    End If
    
    
End Sub

Merci d'avance
 

JEJSLY

XLDnaute Nouveau
Re : Petit problème vba avec des conditions et la formule "For Each C in"

Salut Gorfael, le forum,
J'ai mis beaucoup de temps à répondre, car j'étais en déplacement...
Je viens de me remettre dans le bain; et j'ai suivi tes conseil (F8)

Le problème, c'est que le filtre auto fonctionne avec tout, même avec les dates mais ne fonctionne pas avec les heures.
J'ai essayé pleins de formats avec différentes déclaration:
Dim Début As Long
Dim Début As Date
Dim Début As Variant
String
etc...
Mais je ne trouve pas de solution.
une petite idée?

Sinon pour le reste de la macro, ça à l'air nickel!

Cordialement
 

Discussions similaires

Réponses
5
Affichages
328
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…