Afficher ET utiliser la dernière feuille vba

Fermé
lalalie3 Messages postés 44 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 5 août 2011 - 3 août 2011 à 11:36
lalalie3 Messages postés 44 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 5 août 2011 - 4 août 2011 à 14:16
Bonjour a tous et toutes,
Ma question est la suivante :
Comment afficher ET utiliser la dernière feuille ou onglet précédemment sélectionné(e) en VBA ?
Je m'explique :
J'ai 2 classeurs, le premier [calendrier] crée un calendrier sur une année complète + 7 jours qui va générer un second classeur [planning] avec pléthore d'onglets (53 à 55 onglets correspondants aux nombre de semaines de cette même année +7 jours). Ses onglets sont nommés en fonction du n° de semaine et de l'année (S_n°semaine_année)
Mon souci est que je dois sélectionner un code dans l'onglet S_n°semaine_année qui se trouve dans un autre onglet (Salariés).
En fait pour faire court il faut que je dise a Excel d'aller chercher l'information désirée et de me réafficher l'onglet sur lequel je viens de faire ma dernière sélection.


Ci-dessous le lien des classeurs liés.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijTpcYDKX.zip


Si je n'ai pas été assez clair n'hésitez pas...

Merci par avance pour votre aide et au plaisir de vous lire.
A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
Modifié par pijaku le 3/08/2011 à 12:55
Bonjour,
En gros, avant d'aller chercher ton info, tu notes le nom de la feuille ou tu es. Après avoir pris l'info, tu reviens sur ta feuille.

Dim MaFeuilleDeDepart As String 
Dim MonInfo As String 

MaFeuilleDeDepart = ActiveSheet.Name 
Sheets("Salaries").Select 
MonInfo = Range("C4").Value 
Sheets(MaFeuilleDeDepart).Select 
Range("A1") = MonInfo


Mais il y a plus simple. Tu peux aller chercher ton info sans bouger de ta feuille :
Dim MonInfo As String 
With Sheets("Salaries") 
    MonInfo = .Range("A4").Value 'Ne pas oublier le point devant Range 
End With 
Range("A1") = MonInfo 'Et là ya pa'd point

Cordialement,
Franck P
0
lalalie3 Messages postés 44 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 5 août 2011
3 août 2011 à 15:42
Voila mon code :

Sub cherche_caissier(trouve_caissier As Range)
Dim nbsalaries As Integer
Dim rngrecherche As Range 'déclaration d'une plage de cell
Dim numcaissier As Range
Dim dateselect As Date
Dim i As Integer
Dim trouver1 As Boolean
Dim trouver2 As Boolean
Application.ScreenUpdating = False
If Not trouve_caissier.Value = "" Then
dateselect = ActiveSheet.Cells(trouve_caissier.Row, 6)
Sheets("Salariés").Activate
nbsalaries = Range("B500").End(xlUp).Row
Set rngrecherche = Sheets("Salariés").Range(Cells(2, 2), Cells(nbsalaries, 2))

Set numcaissier = rngrecherche.Find(trouve_caissier.Value, LookIn:=xlValues)

If Not numcaissier Is Nothing Then 'si tu trouves alors
'If Format(dateselect, "dd/mm/yyyy") > Format(Cells(numcaissier.Row, 11), "dd/mm/yyyy") And Cells(numcaissier.Row, 11) <> "" Then
If dateselect > Format(Cells(numcaissier.Row, 11), "dd/mm/yyyy") And Cells(numcaissier.Row, 11) <> "" Then

MsgBox ("le contrat a expiré, vous ne pouvez pas planifier ce collaborateur")
ActiveSheet.Activate
Exit Sub
End If

Sheets("Planning").Cells(trouve_caissier.Row, 8) = Cells(numcaissier.Row, 3) ' je récup le nom
Sheets("Planning").Cells(trouve_caissier.Row, 9) = Cells(numcaissier.Row, 4) ' je récup le prénom

'vérifier ses dispos
trouver = False
For i = 13 To 19

If Sheets("Salariés").Cells(numcaissier.Row, i) = Sheets("Planning").Cells(trouve_caissier.Row, 2) Then
Sheets("Planning").Cells(trouve_caissier.Row, 11) = "Après midi"
trouver1 = True
End If

Next i


For i = 20 To 26
If Sheets("Salariés").Cells(numcaissier.Row, i) = Sheets("Planning").Cells(trouve_caissier.Row, 2) Then
Sheets("Planning").Cells(trouve_caissier.Row, 11) = "Matin"
trouver2 = True
End If

Next i
If trouver1 = False And trouver2 = False Then
Sheets("Planning").Cells(trouve_caissier.Row, 11) = "Journée"
End If

If trouver1 = True And trouver2 = True Then
Sheets("Planning").Cells(trouve_caissier.Row, 11) = "Indisponible"
End If
Call MFC1(trouve_caissier)

Else
Sheets("Planning").Cells(trouve_caissier.Row, 8) = "" ' je récup le nom
Sheets("Planning").Cells(trouve_caissier.Row, 9) = "" ' je récup le prénom
End If
Sheets("Planning").Cells(trouve_caissier.Row, 1) = Sheets("Planning").Cells(trouve_caissier.Row, 3) & Sheets("Planning").Cells(trouve_caissier.Row, 7)
Else
Sheets("Planning").Cells(trouve_caissier.Row, 1) = Sheets("Planning").Cells(trouve_caissier.Row, 3)
End If

Sheets("Planning").Activate

'vidage mémoire variables
Set rngrecherche = Nothing
Set numcaissier = Nothing
Application.ScreenUpdating = True

End Sub

En faite je ne trouve pas où je dois mettre ce que vous conseillez...
Je voudrais changer le "Sheets("Planning") par le dernier onglet selectionné ou travaillé.

Au plaisir de vous lire.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
4 août 2011 à 10:24
Bonjour,
Ton code ne nous aide pas vraiment...
D'où lance tu ce code?
Comment faire pour savoir qu'elle est la dernière feuille utilisée?
Décris nous l'utilisation de ce fichier et plus précisément quand, ou, comment et pourquoi tu lances cette macro?
0
lalalie3 Messages postés 44 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 5 août 2011
4 août 2011 à 11:55
Bonjour,

ci dessous le lien des classeurs.
http://www.cijoint.fr/cjlink.php?file=cj201108/cijT9uAEwj.zip

Il y a une zone de texte dans le classeur calendrier qui explique a quoi il sert.

Il y a egalement une zone de texte dans le classeur "Planning_caisse_original_avec_onglet" qui explique où se trouve le problème.

Le classeur Planning_caisse_original est présent pour tester car calendrier et ce dernier sont liés (autant tout mettre au cas où il y aurais des tests a faire...).
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
4 août 2011 à 13:06
Combien de temps dure l'exécution de ta macro?
Combien de fois plante t'elle ton excel avant de fonctionner?
0
lalalie3 Messages postés 44 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 5 août 2011
4 août 2011 à 13:18
L'execution dure enveron 5 mins le temps de tout faire entre le calendrier et le planning.
Elle ne m'a jamais planté mon excel ...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
4 août 2011 à 13:21
Elle vient de me planter le mien trois fois de suite. Je sais j'insiste...
Je l'ai laissé tourner presque 10 minutes sans résultat.
Ca va être dur de t'aider...
Je vais continuer à regarder sans tester....... Mais sans aucune garantie de résultat!
Ok?
0