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

XL 2016 Boucler sur les feuilles d'un classeur

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

KTM

XLDnaute Impliqué
Bonjour chers tous
j'ai une macro avec boucle qui fait ceci :
j'insère en [Date!B6] une date et la feuille avec la même date en [B1] voit sa plage [A3:A19] remplie avec de "ok"
La macro fonctionne mais je voudrais pouvoir vérifier avant pour chacune des feuilles si les dates en [B1] sont uniques et comprennent la date insérée en [B6] de la feuille Date.


VB:
Sub impr()
Dim sh1, sh As Worksheet
Dim sh2 As Worksheet
Dim wb As Workbook
        Set wb = ThisWorkbook
        Set sh1 = ThisWorkbook.Worksheets("Date")
        For Each sh In wb.Worksheets
           Set sh2 = sh
           Application.ScreenUpdating = False
               If sh2.Range("B1") = sh1.Range("B6") Then
                   With sh2
                     .Range("A3:A19") = "ok"
                   End With
               Exit For
              End If
         Next sh
End Sub
 

Pièces jointes

Bonsoir,

J'avoue que je n'ai pas bien compris ta demande.
Tu as parlé de date en double, c'est un peu confus.
j'ai mis la même date sur une autre feuille, mais comme tu as mis un exit for,
il n'y en a qu'une seule qui est traitée.
Je n'ai pas compris donc pas possible de t'aider.

Bonne continuation.
 
Dernière édition:
Merci .
Mais dans le post j'ai dis que je voudrais verifier que deux feuilles ne comportent pas la meme date deja preenregistree et que la date indiquee existe dans les feuilles.
 
Bonsoir,
Si j'ai bien compris...
VB:
Sub impr2()
Dim LaDate As Date
Dim Sh As Worksheet
LaDate = Worksheets("Date").Range("B6")
For Each Sh In Sheets
    If Sh.Range("B1") = LaDate Then Sh.Range("A3:A19") = "ok"
Next Sh
End Sub
 
Merci mais je me suis pas encore fait comprendre.
La macro n'a aucun probleme a fonctionner.
Ma preoccupation cest comment verifier que toutes les feuilles apart la feuille Date ont des dates en B1 differentes et que la date indiquee comme reference existe parmis les dates sur les feuilles.
 
tu exclus la feuille source comme ci-dessous. j'ai juste ajouté une condition dans ton code.
VB:
Sub impr()
   Dim sh1, sh As Worksheet
   Dim sh2 As Worksheet
   Dim wb As Workbook
   Set wb = ThisWorkbook
   Set sh1 = ThisWorkbook.Worksheets("Date")
   For Each sh In wb.Worksheets
      If sh.Name <> sh1.Name Then 'condition sur nom de la feuille
         Set sh2 = sh
         Application.ScreenUpdating = False
         If sh2.Range("B1") = sh1.Range("B6") Then
            With sh2
               .Range("A3:A19") = "ok"
            End With
            Exit For
         End If
      End If
   Next sh
End Sub
 
Hello,

je voudrais pouvoir vérifier avant pour chacune des feuilles si les dates en [B1] sont uniques et comprennent la date insérée en [B6] de la feuille Date.
Une version avec une feuille supplémentaire te permettant une vérification visuelle.

VB:
Sub Test()
' Remplissage du TS avec les dates des feuilles
Dim wb As Workbook
Dim sh As Worksheet, sh1 As Worksheet, sh2 As Worksheet
Dim LR As Long
Dim Msg1 As String, Msg2 As String

    Application.ScreenUpdating = False

    Set wb = ThisWorkbook
    Set sh1 = wb.Worksheets("Date")
    Set sh2 = wb.Worksheets("Tempo")

    With Range("t_Dates").ListObject
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
    End With

    For Each sh In wb.Worksheets
        If sh.Name <> "Date" And sh.Name <> "Tempo" Then
            Range("t_Dates").ListObject.ListRows.Add
            LR = Range("t_Dates").ListObject.ListRows.Count
            Range("t_Dates").Cells(LR, 1) = sh.Name
            Range("t_Dates").Cells(LR, 2) = sh.Range("B1").Value2
        End If
    Next sh

    If sh2.Range("H2") = 0 Then
        Msg1 = "Pas de dates en double"
    Else
        Msg1 = "/!\ Il y a au moins une date en double !"
    End If

    If sh2.Range("K2") = 0 Then
        Msg2 = "La date référence non trouvée"
    Else
        Msg2 = "/!\ Date de référence trouvée au moins une fois !"
    End If

    sh2.Activate
    Application.ScreenUpdating = True
    MsgBox Msg1 & vbCrLf & vbCrLf & Msg2

End Sub
 

Pièces jointes

Merci!!!!
 
- 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

Discussions similaires

Réponses
5
Affichages
243
Réponses
4
Affichages
180
Réponses
6
Affichages
626
Réponses
2
Affichages
512
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…