Macro mise à jour

c.the

XLDnaute Nouveau
Bonjour,
j'ai créé un ficher avec plusieurs feuilles achats et une feuille synthèse. Le but est que des informations de la feuille achat soient regroupées dans la feuille synthèse. J'ai réussi à faire celà avec la macro suivante qui est présente dans chaque feuille achat et associée à un bouton. En cliquant sur le bouton j'ai donc une ligne qui se crée dans la feuille synthèse.

Ma macro est la suivante :

Private Sub CommandButton1_Click()
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro
'enregistrement dans Base pour pointage annee
'ici je repère la dernière ligne vide pour la Collections des données
L = Sheets("Synthèse").Range("a65536").End(xlUp).Row + 1
'Pour voir se qui se passe je bascule sur la feuille
'Ici c'est le report de la saisie dans la feuille
With Sheets("Synthèse")
'Baker
.Range("a" & L).Value = ActiveSheet.Range("c9")
.Range("b" & L).Value = ActiveSheet.Range("c10")
.Range("c" & L).Value = ActiveSheet.Range("c11")
.Range("d" & L).Value = ActiveSheet.Range("j14")
.Range("e" & L).Value = ActiveSheet.Range("c14")
.Range("f" & L).Value = ActiveSheet.Range("c19")
.Range("g" & L).Value = ActiveSheet.Range("c18")
.Range("h" & L).Value = ActiveSheet.Range("k19")
.Range("i" & L).Value = ActiveSheet.Range("k18")
.Range("j" & L).Value = ActiveSheet.Range("a22")
.Range("k" & L).Value = ActiveSheet.Range("i22")

End With
End Sub

J'ai un deuxième problème qui ai que j'aimerais que quand on modifie des informations dans la fiche achat, la ligne dans la feuille synthèse se mette à jour automatiquement soit par une macro de mise à jour soit en créant la nouvelle ligne et en supprimant l'ancienne.
J'ai essayé des macros de mise à jour et de doublons mais cela ne fonctionne pas.

Si vous avez des idées.
Jevous remercie pour l'aide future.

Bonne journée
 

job75

XLDnaute Barbatruc
Re : Macro mise à jour

Bonjour c.the,

Apparemment le 1er problème (ajout de ligne) est résolu.

Pour la modification, il suffit de rechercher la ligne concernée.

Mais sur quel(s) critère(s) ?

Vous êtes la seule à le savoir pour l'instant.

A+
 

c.the

XLDnaute Nouveau
Re : Macro mise à jour

Le critère serait la N° de commande. j'ai toruvé des marcos concernant les doublons qui m'ont permis de supprimer des lignes ayant le même n° de commande mais cette macro supprime la dernière ligne rentrée alors qu'il faudrait supprimer la première ligne rentrée.

J'ai tenté avec des macros de mise à jour des feuilles et du classeur sans succès aussi.
Le mieux serait une macro qui modifie la ligne du tableau synthèse automatiquement quand les données sont modifiées dans la feuille Achat.

Bonne après midi
 

c.the

XLDnaute Nouveau
Re : Macro mise à jour

Désolé de ne pas l'avoir mis avant.
J'espère que ça vous aidera.

Merci
 

Pièces jointes

  • exemple internet.zip
    14.4 KB · Affichages: 29
  • exemple internet.zip
    14.4 KB · Affichages: 32
  • exemple internet.zip
    14.4 KB · Affichages: 32

job75

XLDnaute Barbatruc
Re : Macro mise à jour

Re,

Sans grande conviction, faute de vraiment comprendre :

Code:
Private Sub CommandButton1_Click()
Dim L As Variant
If [c9] = "" Then [c9].Select: _
  MsgBox "N° PEDIDO indispensable !", 48: Exit Sub
With Sheets("Synthèse")
  L = Application.Match([c9], .[a:a], 0)
  If IsError(L) Then L = .Range("a65536").End(xlUp).Row + 1
  .Range("a" & L) = [c9]
  .Range("b" & L) = [c10]
  .Range("c" & L) = [c11]
  .Range("d" & L) = [j14]
  .Range("e" & L) = [c14]
End With
End Sub
D'après ce que je vois, ce sont toujours les mêmes cellules qui sont renseignées dans la feuille Fiche Achat...

Fichier joint.

A+
 

Pièces jointes

  • exemple internet(1).zip
    17.4 KB · Affichages: 33

job75

XLDnaute Barbatruc
Re : Macro mise à jour

Re,

Bon, une macro évènementielle à la place du bouton :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim L As Variant
If [c9] = "" Then Exit Sub
With Sheets("Synthèse")
  L = Application.Match([c9], .[a:a], 0)
  If IsError(L) Then L = .[a65536].End(xlUp).Row + 1
  .Range("a" & L) = [c9]
  .Range("b" & L) = [c10]
  .Range("c" & L) = [c11]
  .Range("d" & L) = [j14]
  .Range("e" & L) = [c14]
End With
End Sub
Elle se déclenche après toute modification de la feuille Fiche Achat.

A+
 

Pièces jointes

  • exemple internet(2).zip
    15.7 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : Macro mise à jour

Bonsoir, car ce n'est pas fini,

Mais je continue à rouler tout seul avec ce que j'ai compris :rolleyes:

Avec cette version, la feuille Fiche Achat est mise à jour quand on modifie la cellule C9 :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim L As Variant
With Sheets("Synthèse")
  L = Application.Match([c9], .[a:a], 0)
  '---mise à jour de la feuille Fiche Achat---
  Set Target = Intersect(Target, [c9])
  If Not Target Is Nothing Then
    Application.EnableEvents = False
    If IsError(L) Then
      Range("c10:c11,j14,c14") = ""
    Else
      [c9] = .Range("a" & L)
      [c10] = .Range("b" & L)
      [c11] = .Range("c" & L)
      [j14] = .Range("d" & L)
      [c14] = .Range("e" & L)
    End If
    Application.EnableEvents = True
  End If
  '---mise à jour de la feuille Synthèse---
  If IsError(L) Then L = .[a65536].End(xlUp).Row + 1
  If L = 2 Then Exit Sub
  .Range("a" & L) = [c9]
  .Range("b" & L) = [c10]
  .Range("c" & L) = [c11]
  .Range("d" & L) = [j14]
  .Range("e" & L) = [c14]
End With
End Sub
A+
 

Pièces jointes

  • exemple internet(4).zip
    16.8 KB · Affichages: 29

job75

XLDnaute Barbatruc
Re : Macro mise à jour

Re,

Si l'on fait une erreur d'entrée en C9 du N° PEDIDO, elle est entrée telle quelle dans la feuille Synthèse.

J'ai donc ajouté le bouton Supprimer qui permet la suppression.

La macro est simple :

Code:
Dim L As Variant

Private Sub CommandButton1_Click()
If [c9] = "" Then Exit Sub
If MsgBox("Supprimer " & [c9] & " ?", 4) = 7 Then Exit Sub
L = Application.Match([c9], Sheets("Synthèse").[a:a], 0)
Sheets("Synthèse").Rows(L).Delete
[c9] = ""
End Sub
A+
 

Pièces jointes

  • exemple internet(5).zip
    21 KB · Affichages: 28
Dernière édition:

job75

XLDnaute Barbatruc
Re : Macro mise à jour

Bonjour c.the, le forum,

On continue ce matin avec un petit contrôle - soft - de ce qui est entré en C9.

Parce que vous le valez bien.

Code:
Private Sub SoftControl()
If [c9] = "" Then Exit Sub
Dim cel As Range, mes As Byte
Set cel = Sheets("Synthèse").Range("a" & L - 1)
cel.AutoFill Destination:=cel.Resize(2)
If [c9] <> cel.Offset(1) And Val([c9]) <> Val(cel) + 1 And L > 3 Then
  mes = MsgBox("Dernier N° PEDIDO entré : " & cel & "...Continuer avec " & [c9] & " ?", 4)
  If mes = vbNo Then [c9] = "": [c9].Select
End If
cel.Offset(1).Delete xlUp
End Sub
Version (6).

A+
 

Pièces jointes

  • exemple internet(6).zip
    22.3 KB · Affichages: 25

c.the

XLDnaute Nouveau
Re : Macro mise à jour

Bonjour,

Tout d'abord, merci beaucoup de t'être penché autant sur le problème. Je vais rester sur tes deux premières solutions, car généralement ce n'est pas le numéro de PEDIDO qui va changer mais plus les informations qui sont dessous.

Je te remercie encore pour ton aide qui a été d'un grand secours, et je vais étudier plus en profondeur les macros maintenant pour comprendre ce que tu as fait précisemment.

Merci,

Bonne journée
 

job75

XLDnaute Barbatruc
Re : Macro mise à jour

Bonjour c.the,

Je vais rester sur tes deux premières solutions, car généralement ce n'est pas le numéro de PEDIDO qui va changer mais plus les informations qui sont dessous.

Bien sûr, et c'est pour cela que la version (4) et les suivantes affichent toujours dans Fiche Achat les données de la feuille Synthèse correspondant au N° PEDIDO.

Prenez votre temps pour tester et bien comprendre ce qui se passe sur toutes les versions.

A+
 

c.the

XLDnaute Nouveau
Re : Macro mise à jour

En effet, en regardant plus en précision la version 5 est beaucoup plus adaptées même si la version2 fonctionnait correctement.

Par contre, je voudrais être sûr d'avoir bien saisie la différence entre la version 5 et 6, c'est bien que toute la ligne dans le tableau synthèse se supprime dans la version 6 alors que dans la version il ya juste le n° du Pedido?

Merci encore
 

Discussions similaires

Réponses
4
Affichages
231
Réponses
2
Affichages
155

Statistiques des forums

Discussions
312 421
Messages
2 088 269
Membres
103 799
dernier inscrit
ELOTJ