Afficher ET utiliser la dernière feuille vba

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.

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. lalalie3 Messages postés 45 Statut Membre
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. lalalie3 Messages postés 45 Statut Membre
       
      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
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Combien de temps dure l'exécution de ta macro?
      Combien de fois plante t'elle ton excel avant de fonctionner?
      0
    4. lalalie3 Messages postés 45 Statut Membre
       
      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
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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