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

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 !

le___destin

XLDnaute Occasionnel
Je veux créer une colone d'un tableau lorsque je rempli la premiere case emplie automatiquement les autre cellule jusqu'à la date du fin du moi
 
bonjour a tous
@job75 je connaissais pas cette methode de resize avec target (intéressant)

j'airais fait comme ca

VB:
Sub test2()
    Set Target = [A1]
    If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False

    With Target.Resize(Day(DateSerial(Year(Target), Month(Target) + 1, 0)) - Day(Target) + 1, 1)
        .NumberFormat = Target.NumberFormat
        .DataSeries
        .Offset(.Count).Resize(Rows.Count - .Count - .Row + 1).ClearContents
    End With

    Application.EnableEvents = True
End Sub
 
Dernière édition:
et pour ne pas supprimer éventuellement des lignes au cas ou il y aurais d'autres tableaux a gauche ou a droite de cette colonnes
on ne clear que les 1/2/3 cellules en trop
VB:
Sub test2()
    Set Target = [A1]
    If IsDate(Target(1)) And Target.Count = 1 Then
        Application.EnableEvents = False
        With Target.Resize(Day(DateSerial(Year(Target), Month(Target) + 1, 0)) - Day(Target) + 1, 1)
            .NumberFormat = Target.NumberFormat
            .DataSeries
            Range(Target.Offset(30, 0), .Cells(.Count + 1)).ClearContents
        End With
        Application.EnableEvents = True
    End If
End Sub

ou meme encore plus simple
on clear avant
Code:
Sub test2()
    Set Target = [A1]
    If IsDate(Target(1)) And Target.Count = 1 Then
        Application.EnableEvents = False
        With Target.Resize(Day(DateSerial(Year(Target), Month(Target) + 1, 0)) - Day(Target) + 1, 1)
            .Cells(2).Resize(30).ClearContents
            .NumberFormat = Target.NumberFormat
            .DataSeries
        End With
        Application.EnableEvents = True
    End If
End Sub
 
merciiiii bien
juste un petit problem dans la somme des cellules
il garde des valeurs masque alors la resultat est fosse
 
Certaines cellules de la colonne J contiennent des formules et d'autres, des valeurs. Est-ce une erreur ?

y'a t'il solution aussi que si je saisi un valeur dans les cellule des colonnes J et I prend zéro si le jour samedi ou dimanche

Très exactement, que veux-tu ? Si c'est un samedi ou un dimanche, si tu saisis une valeur en colonne I, qu'elle ne soit pas prise en compte dans la formule de la colonne J, ou qu'elle soit effacée par une macro dans la colonne I ?

Daniel
 
Par exp H11= SI(OU(L11="D";L11="S");0;la valeur es entre par l’utilisateur ) alors que si 'j’entre un valeur supérieure a zéro et la condition est vrai automatiquement la case prend zéro si non il accepte la valeur entre
 
J'ai supprimé ls macros situées dans les feuilles et je les ai remplacées par celle-ci, dans le module "ThisWorkbook". Elle ne s'applique qu'aux feuilles dont le nom commence par "tab" :

VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim C As Range
  If Left(Sh.Name, 3) <> "tab" Then Exit Sub
  If Target.Address = "$K$11" Then
    If Not IsDate(Target(1)) Or Target.Count > 1 Then Exit Sub
    If Day(Target) <> 1 Then Exit Sub
    Application.EnableEvents = False
    [C11:C41,I11:I41].Value = 0
    [K12:K41] = ""
    Rows("12:41").Hidden = False
    With Target.Resize(DateSerial(Year(Target), Month(Target) + 1, 1) - Target)
        .NumberFormat = Target.NumberFormat
        .DataSeries
    End With
    With Application
      If .CountA([K39:K41]) < 3 Then
        Rows(41).Offset(-2 + .CountA([K39:K41])).Resize(3 - .CountA([K39:K41])).Hidden = True
      End If
    End With
    Application.EnableEvents = True
  ElseIf Not Intersect(Target, [C11:C41,I11:I41]) Is Nothing Then
    Application.EnableEvents = False
    For Each C In Intersect(Target, [C11:C41,I11:I41])
      If Application.Weekday(Cells(C.Row, 11), 2) > 5 Then
        C.Value = 0
      End If
    Next C
    Application.EnableEvents = True
  End If
End Sub

Regarde le classeur joint. Teste-le.

Daniel
 

Pièces jointes

merci bien


Sub Masque_lig() ' masque les lignes ou la valeur dans les cellules de la colonne F sont ="- -"
Dim cellule As Range
For Each cellule In Range("F12:F14")
If Range("B12") > "0" And cellule.Value = "- -" Then cellule.EntireRow.Hidden = True
Next cellule
End Sub

çà marche bien mai si la valeur change comment les lignes masque s'affiche de nouveau
merci d'avance
 
Essaie :

VB:
Sub Masque_lig()
Dim cellule As Range

For Each cellule In Range("F12:F14")
  If Range("B12") > "0" And cellule.Value = "- -" Then
    cellule.EntireRow.Hidden = True
  Else
    cellule.EntireRow.Hidden = False
  End If
Next cellule
End Sub

Daniel
 
Pour une exécution automatique, mets ce code dans le module de la feuille :


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim cellule As Range
  If Not Intersect(Target, [F12:F14]) Is Nothing Then
    Application.EnableEvents = False
    For Each cellule In Intersect(Target, [F12:F14])
      If Range("B12") > "0" And cellule.Value = "- -" Then
        cellule.EntireRow.Hidden = True
      Else
        cellule.EntireRow.Hidden = False
      End If
    Next cellule
    Application.EnableEvents = True
  End If
End Sub

Daniel
 
bon soire et merci beaucoup pour ton aide

aide moi pour ce tab
si F12="- -" masqué ligne mai si F12 F13 F14 tous = "- -" ne masque pas mais fusionner G12:M14
pour 6 et 7 eme journée masqué tous meme les trois cellule = "- -"
vraiment merci bien Daniel
 

Pièces jointes

- 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
265
Réponses
7
Affichages
137
Réponses
18
Affichages
183
  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
139
Réponses
4
Affichages
210
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…