Recuperer des donnees

BONJOUR

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

Sheets(« IMPAYES »).Range(« A » & ligne).Value = Sheets(« Clients »).Range(« A3 »).Value

Sheets(« IMPAYES »).Range(« B » & ligne).Value = Sheets(« Clients »).Range(« A6 »).Value

Sheets(« IMPAYES »).Range(« C » & ligne).Value = Sheets(« Clients »).Range(« C3 »).Value

Sheets(« IMPAYES »).Range(« D » & ligne).Value = Sheets(« Clients »).Range(« C10 »).Value & « - » & Range(« E10 »).Value & « - » & Range(« G10 »).Value

Sheets(« IMPAYES »).Range(« E » & ligne).Value = Sheets(« Clients »).Range(« B28 »).Value

Sheets(« IMPAYES »).Range(« F » & ligne).Value = Sheets(« Clients »).Range(« B34 »).Value

Dim I

For I = 1 To 3 ’ Loop 3 times.

Beep ’ Sound a tone.

Next I

End Sub

Nota Là ce serait la macro de base. La macro de luxe, après avoir réalisé le ci-dessus trierait la colonne C dans l ordre alphabétique.

Merci pour votre aide

Bonjour,
Teste plutôt comme ceci

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 »

  1. 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 :smile:
    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)

Bonjour,

mimi.zip est pour moi un inconnu dans votre explication

Pour info, je ne connais rien à votre exploitation de votre fichier, et sans autres précisions claires et nettes, je suis dans l’impasse :kissing_smiling_eyes:

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 

Application.Calculation = xlCalculationAutomatic

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

End Sub

Ou dois je mettre ce End If?
Merci

Bonjour,
Teste plutôt comme ceci

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)

Merci pour la solution et aussi pour les explications

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)

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.