Quelqu’un peut il m’aider à réaliser cette macro ?
Classeur XX 000
Dans ce classeur 5 onglets dont : CLIENTS
IMPAYES
Lorsque la cellule O34 de la feuille CLIENTS est supérieure à 0 la macro doit recopier la valeur des cellules A3 A6 C3 C10 B28 B34 dans la feuille IMPAYES respectivement dans colonnes A B C D E F
J’ai essayé ceci mais ….toujours pas doué !!!
Sub ARCHIVER_IMPAYES()
’
’ ARCHIVER_IMPAYES Macro
Dim fichier As Workbook
Dim Onglet As Worksheet
Set fichier = « Workbook »
Set Sheets = « Clients »
Set Sheets = « IMPAYES »
If Range(« O34 »).Value > « 0 » Then
ligne = Sheets(« IMPAYES »).Range(« A2 »).End(xlDown).Row + 1
Sub ARCHIVER_IMPAYES()
' ARCHIVER_IMPAYES Macro
Dim Ws As Worksheet
Dim Wd As Worksheet
Dim Ligne As Integer, i As Integer
Set Ws = Sheets("CLIENTS")
Set Wd = Sheets("IMPAYES")
Ligne = Wd.Range("A" & Rows.Count).End(xlUp).Row + 1
If Ws.Range("O34").Value > 0 Then
Wd.Range("A" & Ligne).Value = Ws.Range("A3").Value
Wd.Range("B" & Ligne).Value = Ws.Range("A6").Value
Wd.Range("C" & Ligne).Value = Ws.Range("C3").Value
Wd.Range("D" & Ligne).Value = Ws.Range("C10").Value & " - " & Ws.Range("E10").Value & " - " & Ws.Range("G10").Value
Wd.Range("E" & Ligne).Value = Ws.Range("B28").Value
Wd.Range("F" & Ligne).Value = Ws.Range("B34").Value
End If
'TRI
Wd.Activate
Wd.Columns("C:C").Select
Wd.Sort.SortFields.Clear
Wd.Sort.SortFields.Add Key:=Range("C1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With Wd.Sort
.SetRange Range("A1:F" & Ligne)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'BEEP
For i = 1 To 3 ' Loop 3 times.
Beep ' Sound a tone.
Application.Wait (Now + TimeValue("0:00:01"))
Next i
End Sub
Rebonjour. Merci pour votre aide. Si ce n’est pas abuser… j’ai fabriqué une usine à gaz… On part de la fiche « Client » que l’on remplit et le report se fait sur" journal client" « impayés ». et la fiche client est enregistrée dans le dossier « FICHES CLIENTS »
le tableau impayé ne se remplit pas bien( voir mimi zip)
2 Les macros fonctionnent mais comme elles ont été bricolées par un novice comme d’ailleurs l’ensemble, quand on appuie sur le bouton enregistrer de la feuille client je trouve que ça pédale un peu beaucoup!
Peut on l’améliorer sans trop de travail?
SVP professeur ne notez pas l’élève sur ce travail
Merci1-DUPONT.xlsm (51,1 Ko) 1-GEGE.xlsm (51,0 Ko) 1-KILOI.xlsm (51,1 Ko) 1-TANGO.xlsm (51 Ko) 1-VERNET.xlsm (51,0 Ko) XX 000.xlsm (367,7 Ko)
excusez moi de m’être mal exprimé. Dans le fichier X 000 on commence par remplir la feulle « Clients » J’en ai rempli 2 dans l’exemple.) Losque la fiche est remplie une partie du contenu va s’inscrire dans la feuille « Journal Clients » grace à la macro ARCHIVER. En cas d’impayé une partie va s’inscrire dans la Feuille « IMPAYES ». (Macro ARCHIVER IMPAYES). Puis la fiche CLIENTS"initiale est enregistrée dans un dossier « FICHES CLIENTS ». (Macro « SAUVE CLIENT »)Cela fait sur l’écran la Feuille Clients réapparait pour permettre de la remettre à Zéro Macro CLIENT ZERO) et entamer une nouvelle fiche. Pour obtenir ce retour j’avais fait la macro RETOUR SUR CLIENTS.
Toutes les macros fonctionnent correctement.
Pour les exécuter j’avais mis 4 boutons de commande. Pour essayer de simplifier j’ai fait une macro ARCHIVER JOURNAL IMPAYES qui appelle succesivement les 4 macros sur un seul bouton de commande 'ENREGISTRER".
Tout fonctionne. Simplement l’exécution des 4 macros avec le bouton enregistrer rame un peu. Je voulais savoir s’il y a moyen de l’accélérer .
Je joins en PJ le classeur XX 000 et les 2 fiches exemples qui devraient être dans un dossier FICHES CLIENTS
Merci.
Ps je mets du temps à vous répondre car j’ai 10 heures de décalage horaire avec vous. XX 000.xlsm (371,1 Ko) 2-AMAR.xlsm (51,0 Ko) 2-DUPONT.xlsm (51,1 Ko)
Re,
teste en remplaçant dans ta macro de lancement des 4 autres macros
Sub ARCHIVER_JOURNAL_IMPAYES()
'
' ARCHIVER JOURNAL_IMPAYES Macro
'
Application.ScreenUpdating = False
Call SAUVE_CLIENT
Call ARCHIVER
Call ARCHIVER_IMPAYES
Call RETOUR_SUR_CLIENTS
'
End Sub
teste aussi en ajoutant
Application.Calculation = xlCalculationManual
juste après Application.ScreenUpdating = False
sans oublier de mettre avant le End Sub
Merci Je promets ou j’essaie de promettre de ne pas chercher a améliorer après cette dernière demande:Dans la macro ARCHIVER JOURNAL IMPAYES
Pour que ces 4 macros se déclenchent je voudrais que les cases A41 B41 C41 D 41 E41 F41 de la feuille XX 000 soient toutes « OK » Dans la négative un message apparait
Pour A41 Veuillez remplir la case NOM DU PROPRIETAIRE
B41 Veuillez remplir la case NOM DE L ANIMAL
C41 Veuillez remplir la case PAIEMENT
D41 Veuillez remplir la case NOM BANQUE
E41 Veuillez remplir la case NOMBRE CHIENS CHATS
F41 Veuillez remplir la case TOILETTEUSE
Et dans ces cas la macro ne se déclenche pas.
Merci
j’ai bricolé un truc mais cela me donne Bloc If sans End If…
Sub VALIDER()
If Range(A41) <> « OK » Then
MsgBox (« REMPLIR NOM PROPRIETAIRE »)
If Range(B41) <> « OK » Then
MsgBox (« REMPLIR NOM ANIMAL »)
If Range(C41) <> « OK » Then
MsgBox (« ENTRER PAIEMENT »)
If Range(D41) <> « OK » Then
MsgBox (« NOM DE LA BANQUE »)
If Range(E41) <> « OK » Then
MsgBox (« NOMBRE DE CHIENS »)
If Range(F41) <> « OK » Then
MsgBox (« REMPLIR TOILETTEUSE »)
End If
Else
Application.ScreenUpdating = False
Call SAUVE_CLIENT
Call ARCHIVER
Call ARCHIVER_IMPAYES
Call RETOUR_SUR_CLIENTS
Sub VALIDER()
If Range("A41") <> "OK" Then MsgBox ("REMPLIR NOM PROPRIETAIRE"): Exit Sub
If Range("B41") <> "OK" Then MsgBox ("REMPLIR NOM ANIMAL"): Exit Sub
If Range("C41") <> "OK" Then MsgBox ("ENTRER PAIEMENT"): Exit Sub
If Range("D41") <> "OK" Then MsgBox ("NOM DE LA BANQUE"): Exit Sub
If Range("E41") <> "OK" Then MsgBox ("NOMBRE DE CHIENS"): Exit Sub
If Range("F41") <> "OK" Then MsgBox ("REMPLIR TOILETTEUSE"): Exit Sub
Application.ScreenUpdating = False
Call SAUVE_CLIENT
Call ARCHIVER
Call ARCHIVER_IMPAYES
Call RETOUR_SUR_CLIENTS
End Sub
Pour répondre où mettre le End If, chaque if doit être fermé par un End if sauf si tu place la suite comme mon exemple
et pour limiter les Endif, tu peux remettre un ElseIf et finir les diverses condition par un End If
tu as placé un End If et un Else après
If "condition= vrai" then (alors)
"je fais ceci"
Elseif(sinon si) then (alors)
"je fais cela"
Else (sinon)
"je fais autre condition"
End if (fin de condition)
J ai un classeur excel avec plusieurs feuilles dont CLIENTS , JOURNAL_CLIENTS et BASE CLIENTS.
La feuille JOURNAL CLIENTS se remplit a partir de la feuille CLIENTS grace à la macro ARCHIVER.
La feuille BASE CLIENTS comporte en colonne A le nom1 en colonne B le contenu de la cellule E de JOURNAL CLIENTS dans le colonnes suivantes la date qui figure en colonne D dans la feuille JOURNAL CLIENTS
Je voudrais faire une macro autonome ( qui se déclenchera à la suite des autres macros en rajoutant CALL MacroX) qui vérifierai dans la feuille BASE CLIENTS colonne A si le nom1 inscrit dans la feuille JOURNAL CLIENTS dans la cellule de la colonne F par la macro ARCHIVER (c’est-à-dire dans la dernière ligne inscrite) y figure.
S’il n’y figure pas ce nouveau nom est recopié dans la colonne A , le contenu de E s’inscrit dans la colonne B et la date (Cellule D de JOURNAL CLIENTS) s’inscrit dans la première colonne libre de BASE CLIENTS.
S’il y figure seule la date est inscrite comme précédemment en regard du nom qui y figure.
Je joins copie du classeur XX 000
Si ce n’est pas trop compliqué, si j’ai bien expliqué mon souhait…… pouvez vous m aider MERCIXX 000.xlsm (347,0 Ko)