convertir en macro ou fonction

justine62000

XLDnaute Occasionnel
bonjour
qui pourrait me convertir ceci en macro ou fonction


si la valeur de la cellule h7 de la feuille mise a jour planning est egal a une des cellule f9 a u9 et f13 a u13 alors prendre le nom correspondant dans la colonne d et effacer ce meme nom dans la feuille mise a jour planning

ou alors
rechercher la valeur de la cellule h7 de la feuille mise a jour planning dans la feuille conges si valeur egal prendre le nom dans la colone d et effacer ce meme nom dans la feuille mise a jour planning

ci joint le fichier merci

justine
 

Pièces jointes

  • Planning test.zip
    30.6 KB · Affichages: 32
  • Planning test.zip
    30.6 KB · Affichages: 32
  • Planning test.zip
    30.6 KB · Affichages: 34

justine62000

XLDnaute Occasionnel
Re : convertir en macro ou fonction

bnojour le fil
je remet le fichier au format 97/2003

merci de votre aide
justine
 

Pièces jointes

  • planning test.zip
    20.8 KB · Affichages: 31
  • planning test.zip
    20.8 KB · Affichages: 31
  • planning test.zip
    20.8 KB · Affichages: 30

Robert

XLDnaute Barbatruc
Repose en paix
Re : convertir en macro ou fonction

Bonjour le fil, bonjour le forum,

En effet ton fichier s'ouvre maintenant... J'ai modifié la macro événementielle Change si tu changes le numéro de semaine en H7 ça efface le nom. Mais comme ton fichier est protégé par un mot de passe (c'est malin !!!) j'ai du faire des copier/coller pour vérifier que le code fonctionne (en rouge la partie que j'ai rajouté) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=red]Dim r As Range 'déclare la variable r (Recherche)[/COLOR]
[COLOR=red]Dim n As String 'déclare la variable n (Nom)[/COLOR]
[COLOR=red]Dim cel As Range 'déclare la variable cel (CELlule)[/COLOR]
 
[COLOR=red]If Target.Address = "$H$7" Then 'condition 1 : si l'adresse de la cellule est H7[/COLOR]
[COLOR=red] With Sheets("Conges (2)") 'prend en compe l'onglet "Conges (2)"[/COLOR]
[COLOR=red]     Set r = .UsedRange.Find(Target.Value, .Range("D6"), xlValues, xlWhole) 'définit la variable r[/COLOR]
[COLOR=red]     If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence de r[/COLOR]
[COLOR=red]         n = .Cells(r.Row, 4).Value 'définit la variable n (le nom)[/COLOR]
[COLOR=red]         For Each cel In Range("ListChoisis") 'boucle dans la plage des noms[/COLOR]
[COLOR=red]             If cel.Value = n Then 'condition 3 : si la valeur de la cellule est égale au nom[/COLOR]
[COLOR=red]                 cel.ClearContents 'efface la cellule[/COLOR]
[COLOR=red]                 Exit For 'sort de la boucle[/COLOR]
[COLOR=red]             End If 'fin de la condition 3[/COLOR]
[COLOR=red]         Next cel 'prochain nom de la plage de noms[/COLOR]
[COLOR=red]     End If 'fin de la condition 2[/COLOR]
[COLOR=red] End With 'fin de la prise en compte de l'onglet "Conges (2)"[/COLOR]
[COLOR=red]End If 'fin de la condition 1[/COLOR]
 
If Intersect(Range("J20:J30"), Target) Is Nothing Then Exit Sub
If Application.WorksheetFunction.CountIf(Range("J20:J30"), Target) > 1 Then
    MsgBox "cette personne figure deja dans le planning"
    Target.ClearContents
End If
End Sub
 

justine62000

XLDnaute Occasionnel
Re : convertir en macro ou fonction

bonsoir robert,le fil
magniphique ton code fonctionne
par contre il y a un petit probleme lorsque plusieur personne sont en conges en meme temps il n'efface pas tous
mot de passe deprotection "david"
serait il possible que lorsque la personne ne se trouve plus en conges elle reprenne sa place dans dans le planning
exemple
semaine 1 maxence horaire du personel 2
semaine 2 pas de maxence dans le planning puisqu'il est en conges
semaine 3 maxence reprend sa place dans le planning en personel 3(sauf si il est encore en conges)
justine
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : convertir en macro ou fonction

Bonsoir Justine, bonsoir le forum,

Justine ce n'est que maintenant que je prends le temps de te répondre. J'ai regardé ton problème et les petites modifications que tu demandes sont en fait bien plus complexe qu'il n'y paraît. Il faudrait repenser l'ensemble pour arriver à faire ce que tu demandes et je t'avoue ne pas en avoir le courage ni le temps.
 

justine62000

XLDnaute Occasionnel
Re : convertir en macro ou fonction

bonjour
est ce possible d'y parvenir comme ceci
h7=cellule h7 feuille mise a jour planning
autre cellule=cellule feuille conges(2)

si h7=f9;h7=h9;h7=j9;h7=l9;h7=n9
alors chercher le nom qui se trouve dans la colonne d de la ligne 9 de la feuille conges et effacer ce meme nom dans la feuille mise a jour planning
sinon ne rien faire

qu'en pensez vous je suis debutante mais j'aimerais bien y arriver

et ainsi de suite
pour les lignes 13,17,21 etc
justine
 

Discussions similaires

Réponses
0
Affichages
259

Statistiques des forums

Discussions
312 553
Messages
2 089 532
Membres
104 205
dernier inscrit
mehaya63