Déplacement de tableau?

atlonia

XLDnaute Occasionnel
Bonjours a tout le monde,

Mon problème et le suivant: Je dois descendre mon tableau de 3 lignes, A1 et A2 sont fusionnées pour accueillir le titre, A3 servira pour des boutons de mise en forme des cellules d'horaire (attribution de couleur pour les absences).

Une fois mon tableau descendu, mes formules d'attribution et de calcul d'horaires ont apparament bien suivi le mouvement.

Il n'en est pas de même pour la cellules de changement de semaine; j'ai bien tenté de modifier la macro, mais si je commence a manipuler "Visual Basic Editor", je me rends bien compte que j'ai encire beaucoup de chemin a faire...!

Une âme charitable aurait-elle la gentillesse de bien vouloir se pencher sur mon problème?

Merci a elle(s)...!

Ci-joint mon classeur modifié.
 

atlonia

XLDnaute Occasionnel
Re : Déplacement de tableau?

Ben! je sais pas ce qu'il se passe, il semblerais que ça n'a pas marché cette fois ci non plus.

Encore un essais!


Ah! ça y est, le fichier était trop lourd, le voila zippé.

Milles excuses.
 

Pièces jointes

  • horaires05v03.zip
    14.9 KB · Affichages: 29

Cousinhub

XLDnaute Barbatruc
Re : Déplacement de tableau?

Bonsoir, peut-être avec ce code :

Note bien le -1 en rouge, afin de sauvegarder sous le numéro de semaine que tu viens de quitter, et non le numéro de semaine actuel

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim NF As Worksheet, Feuille As Worksheet
If Not Intersect(Target, Range("a5")) Is Nothing Then
    For Each Feuille In ThisWorkbook.Worksheets
     If Target.Value = Val(Right(Feuille.Name, 2)) Then
        If MsgBox("Feuille déjà existante, Afficher la feuille", vbInformation + vbYesNo, "Erreur:") = vbYes Then
          Feuille.Activate
          Exit Sub
        Else
          Exit Sub
        End If
     End If
    Next
With Range("A4:O42")
    .Copy
    Set NF = Worksheets.Add
    NF.Range("A1").PasteSpecial xlPasteAll
    NF.Name = "SEM " & Me.Range("A5") [COLOR="Red"]- 1[/COLOR]
End With
Range("B7:O42").ClearContents
End If
Me.Activate
Application.ScreenUpdating = True
End Sub
 

atlonia

XLDnaute Occasionnel
Re : Déplacement de tableau?

Bonsoir, peut-être avec ce code :

Note bien le -1 en rouge, afin de sauvegarder sous le numéro de semaine que tu viens de quitter, et non le numéro de semaine actuel

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="Red"]Application.ScreenUpdating = False[/COLOR]
Dim NF As Worksheet, Feuille As Worksheet
If Not Intersect(Target, Range("a5")) Is Nothing Then
    For Each Feuille In ThisWorkbook.Worksheets
     If Target.Value = Val(Right(Feuille.Name, 2)) Then
        If MsgBox("Feuille déjà existante, Afficher la feuille", vbInformation + vbYesNo, "Erreur:") = vbYes Then
          Feuille.Activate
          Exit Sub
        Else
          Exit Sub
        End If
     End If
    Next
[COLOR="Red"]With Range("A4:O42")[/COLOR]
    .Copy
    Set NF = Worksheets.Add
    NF.Range("A1").PasteSpecial xlPasteAll
    NF.Name = "SEM " & Me.Range("A5") [COLOR="Red"]- 1[/COLOR]
End With
[COLOR="Red"]Range("B7:O42").ClearContents[/COLOR]
End If
Me.Activate
[COLOR="Red"]Application.ScreenUpdating = True[/COLOR]
End Sub

Merci bhbh,

Décidément, tu m'est d'un grand secours, ça a l'air de trés bien fonctionner, mais pourrait tu m'expliquer les lignes en rouge,pour que je comprenne un peu mieux ce que tu as fait?

Pour les lignes "Range", j'ai bien compris qu'il était question de l'adressage du menu déroulant de la cellule "A4" et de "B7" la première cellule de ma feuille de calculs; ce que je ne comprend pas, c'est la 2ème partie de la commande (042).

Merci de ton aide.
 

bqtr

XLDnaute Accro
Re : Déplacement de tableau?

Bonjour,

Pour les Ranges :

-With Ranges("A4:O42") --> cela se traduit par "avec la plage de cellule A4:O42".
-Ranges("B7:O42").ClearContents --> Cette instruction supprime
uniquement le contenu de la plage B7:O42 de ta feuille (pas la mise en forme).

-Application.ScreenUpdating = False
-Application.ScreenUpdating = True
Ces deux instructions permettent de "geler" l'écran (si = False) puis de le "dégeler" (si = True). Concrètment tu ne vois pas ce que fait Excel pendant l'exécution de la macro où alors très rapidement, par exemple le passage d'une feuille à l'autre .../... Cela accélère aussi l'exécution des macros.

Par contre avec le -1 tu vas avoir un décalage dans les n° de feuille.
La semaine 1 sera enregistrée avec le N° 0, (SEM 0), la semaine 2 avec le N°1 (SEM 1) .../...


Bonne fin de nuit
 

atlonia

XLDnaute Occasionnel
Re : Déplacement de tableau?

Mais tu ne dort jamais, quelle santé...!

Merci pour ces explications, je viens de comprendre "O42" se rapportait a la dernière cellule de ma feuille de calculs...!

Mais a 4h00 du mat, après une soirée en boite, j'ai plus les yeux a leur place!

Je vais aller les reposer.

Je te souhaite une bonne nuit et te remercie encore pour ta serviabilité.
 

Discussions similaires

Réponses
14
Affichages
841
Réponses
8
Affichages
352

Statistiques des forums

Discussions
312 765
Messages
2 091 897
Membres
105 090
dernier inscrit
Raissa