Afficher ET utiliser la dernière feuille vba
lalalie3
Messages postés
45
Statut
Membre
-
lalalie3 Messages postés 45 Statut Membre -
lalalie3 Messages postés 45 Statut Membre -
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.
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:
- Afficher ET utiliser la dernière feuille vba
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Comment utiliser chromecast sur tv - Guide
- Supprimer dernière page word - Guide
- Dernière version chrome - Accueil - Applications & Logiciels
- Utiliser iphone comme webcam - Guide
2 réponses
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.
Mais il y a plus simple. Tu peux aller chercher ton info sans bouger de ta feuille :
Cordialement,
Franck P
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
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.
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.
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...).
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...).