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

Petit problème de remplacement cellule

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

patoq

XLDnaute Occasionnel
Bonjour le forum,
J'ai réalisé une feuille planning avec 3 équipes que je sélectionne avec une liste déroulante.
Mon problème ,c'est lorsque je remplace les jours ça coince!!
Je m'explique :
L'équipe 1 est figé (elle s'affiche lors de l'ouverture de la feuille).
Pour l'équipe 2 j'aimerais remplacer tous les "M" par des "N" ,tous les "S" par des "M" et tous les "N" par des "S" (un roulement 3x8) par l'évenement combobox_change je pense.J'ai bien essayé en enregistrant la macro de remplacement et en la dupliquant mais la boucle est mauvaise (en fait elle tourne en rond et le planning est mauvais.

Je vous remercie d'avance de vos propositions.
A plus
 

Pièces jointes

Re : Petit problème de remplacement cellule

Bonjour

Je me pose quand même une question, en regardant ton fichier joint.
Dans les lignes 6-7 tu notes des codes pour des maladies et autrs abscences...

Je suppose que ces abréviations sont incorporées au planning de chaque équipe, non ?
Dès lors, comment garder en mémoire les changement d'abscences si tu changes d'équipe ?

Juste changer les M en N suivant l'équipe c'est pas dur. mais ce sont les informations supplémentaires, elles ne doivent pas changer d'équipe elles...

Merci
 
Re : Petit problème de remplacement cellule

Bonjour Prince,

Au pire les absences je les enleverai ,j'ai un autre fichier qui gére tres bien cela.
Remplacer les M en N ce n'est pas dur je l'ai fait !!!
C'est de changer tout qui me bloque : si je remplace M par N et S par M ça marche mais pour la 3eme condition (N par M ça boucle et ça repart si tu vois ce que je veut dire)
Merci
A plus
 
Re : Petit problème de remplacement cellule

Bonjour,

Voici une macro ("Remplacer") qui travaille à partir des dates et du roulement. (J'ai crée un roulement arbitraire pour l troisème equipe)

Tu peux appeler la macro Remplacer par l'évènement Change de la combobox:
'Module de code de la feuille Planning 2012
Code:
Private Sub ComboBox1_Change()
 If ComboBox1.ListIndex > -1 Then Remplacer ComboBox1.ListIndex
End Sub

Dans un module Standard
Les données autres que M,N ou S seront perdues....

Code:
Sub Remplacer(NumEquipe As Integer)
    Const An = 2012 'Remplacer l'année ici ou d'une autre façon
    Dim l As Long, c As Long, i As Byte
    Dim mois As Byte
    Dim Roulement As String
    Roulement = Array("MMMMMNNNNNSSSSS", "NNNNNSSSSSMMMMM", "SSSSSMMMMMNNNNN")(NumEquipe)
    With Sheets("Planning 2012")
        For l = 9 To 31 Step 2
            mois = mois + 1
            i = 0
            For c = 2 To 32
                If Weekday(DateSerial(An, mois, c - 1), vbMonday) < 6 Then
                    If i = 15 Then i = 1 Else i = i + 1
                    .Cells(l, c) = Mid(Roulement, i, 1)
                End If
                If Month(DateSerial(An, mois, c - 1)) > mois Then Exit For
            Next
        Next l
    End With
End Sub

Autre macro qui fonctionne à partir de la couleur de fond des cellules pour déterminer lesquelles remplacer. Nommer l'ensemble des lignes de données "PDatas" après les avoir sélectionnées avec la touche CTRL

Code:
Sub Remplacer2(NumEquipe)
    Dim c As Range, i As Byte
    Dim Roulement As String
    Roulement = Array("MMMMMNNNNNSSSSS", "NNNNNSSSSSMMMMM", "SSSSSMMMMMNNNNN")(NumEquipe)
     For Each c In Sheets("Planning 2012").Range("Pdatas").Cells
        If c.Interior.ColorIndex <> 48 Then
         If i = 15 Then i = 1 Else i = i + 1
         c = Mid(Roulement, i, 1)
        End If
     Next c
End Sub

A+
 
Dernière modification par un modérateur:
Re : Petit problème de remplacement cellule

Bonjour
Dans un premier temps dans propriété du combobox1, mettre T1 à linkcell
Ecrire blanc sur blanc pour la cellule T1
Dans les cellules C9 à G9 mettre =SI($T$1="Equipe 1";"M";SI($T$1="Equipe 2";"N";"S")) et ainsi de suite... pour toutes cellules concernées...

A+ François
 
Re : Petit problème de remplacement cellule

Salut Hasco ,Salut fanfan38
Tout d'abord merci de vous pencher sur mon cas.
Hasco j'ai essayé ton code ,ça ne marche pas (c'est surement du au "Array" ,ça décale les jours ).
Je te met le fichier avec ton code pour que tu puisses voir (certaines semaines ça met 3 S et 2 N par exemple)
 

Pièces jointes

Re : Petit problème de remplacement cellule

Re,

Roulement semaine complète:
Code:
Sub Remplacer(NumEquipe As Integer)
    Const An = 2012 'Remplacer l'année ici ou d'une autre façon
    Dim l As Long, c As Long, i As Byte
    Dim mois As Byte
    Dim Roulement As String
    Roulement = Array("MNS", "NSM", "SMN")(NumEquipe)
    With Sheets("Planning 2012")
        For l = 9 To 31 Step 2
            mois = mois + 1
            For c = 2 To 32
                Select Case Weekday(DateSerial(An, mois, c - 1), vbMonday)
                    Case 1 'Lundi on change de lettre 
                      If i = 3 Then i = 1 Else i = i + 1
                      .Cells(l, c) = Mid(Roulement, i, 1)
                    Case 2 To 5 'Mardi à Vendredi on ne change pas de lettre
                       .Cells(l, c) = Mid(Roulement, i, 1)
                    Case 6 To 7 'Week-end on fait la grasse matinée, nuit blanche, soirée emdiablée
                End Select
                If Month(DateSerial(An, mois, c - 1)) > mois Then Exit For
            Next
        Next l
    End With
End Sub

A+
 
Re : Petit problème de remplacement cellule

Re,

Waouh merci Hasco ça marche du tonnerre. Sympa tes commentaires dans le code 😉
Mon cerveau de mollusque va s'atteler à déchiffrer tout ça.
Passe boire une bière dans la Loire (la bière du Pilat) 🙄🙄
 
Re : Petit problème de remplacement cellule

Re,
En fait ça fonctionne jusqu'a septembre et après ça part en c.....es.
Une bonne omelette aux chanterelles mmmmmm

Je vais finir par faire 3 onglets pour 3 équipes
 

Pièces jointes

Dernière édition:
Re : Petit problème de remplacement cellule

Re,

Ben Patoq, c'est pas forcément la peine de remettre ton fichier à chaque fois, surtout si tu n'as apporté aucun changement.

Je ne vois pas ce qui va de travers. les Schemas sont bien respectés d'un bout à l'autre de l'année. Testé sous 2007 et 2010.

A+
 
Re : Petit problème de remplacement cellule

Re,
j'ai repris le fichier d'origine ou j'ai appliqué ta derniere macro et le combobox_change dans la feuille
En equipe 1 j'ai S la derniere semaine de septembre ,donc M la semaine apres et N ensuite ,tout est normal
Si je passe en equipe 2 j'ai bien M la derniere semaine (normal) mais je devrais avoir N la semaine apres et j'ai S et ensuite encore M.
J'espere avoir bien expliqué .
Merci (si tu y arrives tu as droit à ta tartine de confiture de lait slurp slurp )
 
Re : Petit problème de remplacement cellule

Re,

Tu as un roulement sur Trois semaines complètes, dans Array("MNS", "NSM", "SMN") chacune des chaines de caractères représente un roulement d'une équipe sur 3 Semaines( une semaine par caractère)

Equipe 1 MNS
Equipe 2 NSM
Equipe 3 SMN 'Arbitrairement choisit par mes soins et à adapter à ta troisème équipe

Mais si j'ai inversé Equipe 1 et 2 il suffit de mettre les chaines de caractères le bon ordre: Array("NSM", "MNS", "SMN")

Et à l'interieur de ces chaines tu peux aussi inverser les caractères pour un nouveau roulement.

OK?

A+

A+
 
Re : Petit problème de remplacement cellule

Re,
Je regarde mais non il n'y a pas de problème dans ton code (le roulement est bon, tu ne t'es pas trompé ).
Il doit y avoir un problème de cellule fin septembre , je vais regarder car jusqu'a fin septembre ça marche.
Merci bcp pour ton aide
A plus
 
Re : Petit problème de remplacement cellule

Re,

Je crois avoir saisit le blème:

Essaie avec ceci. (La ligne permettant de sauter au mois suivant était mal placée)

Code:
Sub Remplacer(NumEquipe As Integer)
    Const An = 2012 'Remplacer l'année ici ou d'une autre façon
    Dim l As Long, c As Long, i As Byte
    Dim mois As Byte
    Dim Roulement As String
    Roulement = Array("MNS", "NSM", "SMN")(NumEquipe)
    With Sheets("Planning 2012")
        For l = 9 To 31 Step 2
            mois = mois + 1
            For c = 2 To 32
           ' If l = 25 And c = 32 Then Stop
                If Month(DateSerial(An, mois, c - 1)) > mois Then Exit For
                Select Case Weekday(DateSerial(An, mois, c - 1), vbMonday)
                    Case 1
                      If i = 3 Then i = 1 Else i = i + 1
                      .Cells(l, c) = Mid(Roulement, i, 1)
                    Case 2 To 5
                       .Cells(l, c) = Mid(Roulement, i, 1)
                    Case 6 To 7
                End Select
            Next
            Debug.Print l, mois, i
        Next l
    End With
End Sub

A+
 
Dernière modification par un modérateur:
- 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
3
Affichages
544
C
Réponses
4
Affichages
2 K
C
N
Réponses
7
Affichages
2 K
nanoux64
N
A
Réponses
0
Affichages
7 K
Arpopa
A
V
Réponses
2
Affichages
2 K
VOILLOT
V
T
Réponses
6
Affichages
2 K
D
Réponses
4
Affichages
748
D
M
Réponses
6
Affichages
7 K
M
C
Réponses
1
Affichages
2 K
corloste
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…