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
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
A voir également:
- Afficher ET utiliser la dernière feuille vba
- Comment utiliser chromecast - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Comment utiliser wetransfer gratuit ? - Guide
- Afficher mot de passe wifi android - Guide
- Supprimer dernière page word - Guide
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
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.
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
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
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.
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.
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
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?
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?
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
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...).
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...).
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
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?
Combien de fois plante t'elle ton excel avant de fonctionner?
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
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 ...
Elle ne m'a jamais planté mon excel ...
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
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?
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?