Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

creation d' une macro

7 réponses
Avatar
Cyr13
bonsoir,
j aurais besoin d' aide pour ecrire une macro.

voilà,j' aurais voulu qu une macro ouvre une boite de dialogue pour demander
pour quel date on veut imprimer,
ensuite qu elle trouve cette date dans la feuille
"effectifs clients" sur la ligne C4:AG4 et qu elle verifie si les ligne
?6:?45 ne sont pas vide et la condition supreme
que si la cellule est renseignée imprimer l onglet donc le nom se trouve sur
la meme ligne dans la colonne b

1/janv 2/janv 3/janv
ex: enfance soir 25
donc comme il y a 25 en D3 imprimer longlet nommé "enfance"

7 réponses

Avatar
Cyr13
Oups ...j ai oublier le merci de rigeur
Avatar
Daniel.C
Bonsoir.
Essaie :

Sub test1()
rep = InputBox("Entrez une date")
If IsDate(rep) Then
rep = CDate(rep)
With Sheets("effectifs clients")
col = Application.Match(rep * 1, .[C4:AG4], 0)
If IsNumeric(col) Then
col = col + 2
ligne = Intersect(.Columns(col), .Rows("5:60000")).Find("*").Row
On Error Resume Next
feuille = .Cells(ligne, 1)
Sheets(feuille).PrintOut
If Err.Number <> 0 Then
Err.Clear
MsgBox "nom de feuille erroné : " & .Cells(ligne, 1)
End If
End If
End With
End If
End Sub

Cordialement.
Daniel
"Cyr13" a écrit dans le message de news:


Oups ...j ai oublier le merci de rigeur



Avatar
Cyr13
merci pour cette reponse aussi rapide, mais cela ne marche pas
j obtient "nom de feuille erroné" alors que le nom du client en b5 et le
meme que celui de l onglet
Avatar
Daniel.C
Oups, j'avais compris d'après ton exemple, que les noms des feuilles étaient
en colonne A. Utilise :

Sub test1()
rep = InputBox("Entrez une date")
If IsDate(rep) Then
rep = CDate(rep)
With Sheets("effectifs clients")
col = Application.Match(rep * 1, .[C4:AG4], 0)
If IsNumeric(col) Then
col = col + 2
ligne = Intersect(.Columns(col), .Rows("5:60000")).Find("*").Row
On Error Resume Next
feuille = .Cells(ligne, 2)
Sheets(feuille).PrintOut
If Err.Number <> 0 Then
Err.Clear
MsgBox "nom de feuille erroné : " & .Cells(ligne, 1)
End If
End If
End With
End If
End Sub

Daniel
"Cyr13" a écrit dans le message de news:

merci pour cette reponse aussi rapide, mais cela ne marche pas
j obtient "nom de feuille erroné" alors que le nom du client en b5 et le
meme que celui de l onglet





Avatar
Cyr13
Génial, cela fonctionne, que dire si ce n'est un grand merci et que si tout
le monde pouvait s' aider comme ici le monde n' en serait que meilleur !!.
Avatar
Cyr13
bonsoir a l'attention de Daniel.C

le code fonction bien, mais seulement avec le premier clients trouver, puis
le msgbox affiche "L'onglet de ce client n'existe Pas !!
une solution peut etre... merci d avance
Avatar
Cyr13
bonjour Daniel.C
suite au test de la macro j ai decouvert un probleme
tout fonctionne bien pour le premier client mais on dirait qu elle plante
des le deuxieme(probleme de boucle ??)
merci de l aide !!
ci joint le code que j ai adapter

Sub Imprimer_Feuille_Livraison()

rep = InputBox("Entrez une date")
If IsDate(rep) Then
rep = CDate(rep)
With Sheets("effectifs clients")
col = Application.Match(rep * 1, .[C4:AG4], 0)
If IsNumeric(col) Then
col = col + 2
ligne = Intersect(.Columns(col), .Rows("5:60000")).Find("*").Row
On Error Resume Next
Feuille = .Cells(ligne, 2)
Sheets(Feuille).[J11:K11].Select
Sheets(Feuille).AutoFilter
Sheets(Feuille).AutoFilter Field:=2, Criteria1:="<>"
Attente (500)
Sheets(Feuille).PrintOut
Sheets(Feuille).AutoFilter
Attente (500)
If Err.Number <> 0 Then
Err.Clear
MsgBox "L'onglet de ce client n'existe Pas !!" & .Cells(ligne,
1)
End If
End If
End With
End If
End Sub
-------------------------------------------------------
Sub Attente(milisecond As Integer)
Dim Start, PauseTime
PauseTime = milisecond / 7200
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop
End Sub