Bonjour,
ci-joint fichier amélioré mais il y a encore du boulot.
Bonjour,
ci-joint fichier amélioré mais il y a encore du boulot.
J'ai testé le fichier, original le système pour créer une référence unique :-)
Quand je vide le tableau et met toute les cases à non tout s'efface dans la liste des produits même l'entente je ne comprend pas pourquoi...
J'ai eu aussi comme blague la liste des produits ne se met pas à jour. Puis j'ai recommencé la même opération et cela fonctionne ... Donc mystère lol
Quand tu dis qu'il y a encore du boulot, tu peux m'expliquer ?
Bonjour le forum, Greg,
ça fait partie des problèmes, en effet tu m'as demandé que si la saisie passe de oui à non, la ligne soit effacée dans la "liste des produits par client" par contre qu'entends-tu par "même l'entente", si ton fichier a la même structure que le dernier que je t'ai envoyé, il faut que tu m'expliques.tout s'efface dans la liste des produits même l'entente je ne comprend pas pourquoi...
Je pense qu'on avance mais on est loin d'avoir fini car tu voulais ne mettre le nom et adresse qu'une seule fois, ce qui va poser des difficultés pour ton publipostage, vu l'organisation de ton fichier, j'imagine que si tu envoies la fiche à chaque client, celui qui aura 2 produits aura 2 courriers, à me préciser également.
Bonne journée
Je n'ai rien changé au fichier de base. J'ai travaillé sur celui que tu m'as envoyé. J'ai juste placé à "non" tout les produits.Envoyé par casefayere
Après avoir fait cela, la ligne avec les titres des colonnes s'est effacée.
Ce n'est pas bien grave car logiquement le fichier ne devrait jamais être vide.
Oui on avance bien :-) Et c'est grâce à toi...Envoyé par casefayere
Publipostage
Oui, j'aimerais que le nom du client ne soit noté qu'une fois. Et lors du publipostage tout les produits soit écrit sur une même page.
Expliqué d'une autre manière :
Si monsieur Dupont à 3 produits (Produit 2, Porduit 5, Produit 6), je voudrais que figure sur le publipostage (Une seule lettre) :
Le nom, prénom, adresse du client (1 Fois)
Le détail du produit 2,
Le détail du produit 5,
Le détail du produit 6,
Voila, j'espère que c'est plus clair.
Si c'est possible... Si non, je ferai une lettre par produit mais en dernier possibilité.
Problème avec la copie de ligne :
Concernant le petit problème cité précédemment comme quoi une ligne n'est pas toujours copiée. Je pense avoir compris pourquoi.
Si j'encode les données du clients dans l'onglet "détail client" et que je passe les produits à oui directement la ligne n'est pas toujours copiée.
Je me suis rendu compte que je devais encoder les données du client. Aller dans l'onglet "Détail produit", Retourner dans l'onglet "Détail client" avant de pouvoir mettre les produit à "oui".
Expliquer différemment :
Dans l'onglet "Détail client", je dois encoder tout mes clients.
Je dois aller ensuite dans l'onglet "Détail produit".
Retourner dans l'onglet "Détail client" et mettre les produits à "oui".
A ce moment, quand je met un produit à "oui", le message de confirmation apparait pour copier la ligne.
Question ?
Veux tu que je te prépare les fichiers de base pour le publipostage pour que cela soit plus clair et sache les données qui doivent y figurer ?
Un grand merci à toi,
Bonne journée
Re,
avant de s'attaquer au publipostage, j'aimerais que tonfichier soit fonctionnel.
Alors je ne comprends pas cette remarque :
j'ai ajouté une condition, je pense qu'un problème arrive dès que tu selectionnes plusieurs cellules en meme temps...la ligne avec les titres des colonnes s'est effacée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ...If maj = True Then If Target.Row > 3 And Target.Column > 24 And Target.Cells.Count = 1 Then ...
Envoyé par casefayere
1; Numéro de référence unique; Noms; Prénoms; Num. et Rue; Code postal; Ville; Nom Produit; compagnies; date d'achat; date de retour; mensualité; prix;
je ne sélectionne pas plusieurs lignes ou colonnes ...Envoyé par casefayere
Mais je n'ai pas compris a quoi tu fais référence.
et moi, je ne comprends pas pourquoi tes entetes se sont effacées, j'espère que tu a pris le bon fichier que je remets ci-dessous
oui, j'ai testé, j'ai fait comme toi tout remis à "non" et n'ai pas eu de problèmes, c'est là que je disais "selectionner plusieurs cellules" car j'ai effectivement selectionné toutes les cellules de Y4 à AL15 et cliqué sur remplacer => "oui" par "non". et tout s'est bien passé sachant que j'ai amélioré cette ligne de code partie (soulignée et rouge)
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Target.Row > 3 And Target.Column > 24 And Target.Cells.Count = 1 Then
Je viens d'effacer tout le contenu et de recommence un encodage "propre" et je n'ai plus le souci...
Moi pas avoir compris mdr
alors si tu n'as plus rien à changer à ce stade, il va falloir prévoir un publipostage efficace en reprenant sur un autre tableau ou autre feuille toutes les commandes par client, à moins que voyes un autre défaut dans ce qui a été fait
Problème avec la copie de ligne :
Concernant le petit problème cité précédemment comme quoi une ligne n'est pas toujours copiée. Je pense avoir compris pourquoi.
Si j'encode les données du clients dans l'onglet "détail client" et que je passe les produits à oui directement la ligne n'est pas toujours copiée.
Je me suis rendu compte que je devais encoder les données du client. Aller dans l'onglet "Détail produit", Retourner dans l'onglet "Détail client" avant de pouvoir mettre les produit à "oui".
Expliquer différemment :
Dans l'onglet "Détail client", je dois encoder tout mes clients.
Je dois aller ensuite dans l'onglet "Détail produit".
Retourner dans l'onglet "Détail client" et mettre les produits à "oui".
A ce moment, quand je met un produit à "oui", le message de confirmation apparait pour copier la ligne.
Question ?
Veux tu que je te prépare les fichiers de base pour le publipostage pour que cela soit plus clair et sache les données qui doivent y figurer ?
ou je n'ai pas compris cette remarque ou tu as mal compris le fonctionnement. Il est évident qu'il faille que ton client et ses coordonnées soient enregistrées avant de passer à sa commande, c'était ça le problème ?
J'ai du mal m'exprimer.
Si j'ajoute un nouveau client et rempli directement les produits. La ligne ne se copie pas.
Si j'ajoute un nouveau client, ne rempli pas les produits, je vais dans l'onglet "Détail des produits", reviens dans l'onglet "Détail des clients", met mes produits à "oui" la ligne se copie.
Tu comprends ?
toi, tu me dis que je dois d'abord encoder les infos de tout les clients.
après, je dois changer d'onglet et aller dans "détail produit" (ou rien n'est à oui, donc rien n'est encore copié)
après, je dois à nouveau changer d'onglet et revenir dans l'onglet "détail client" (ou maintenant, je place les produits à oui)
et après avoir cliqué sur "ok", la ligne se copie.
Serait-il possible de remplacer la confirmation après avoir sélectionné un "oui" par un bouton à la fin d'une ligne qui aurait la même fonction.
Cela m'éviterait de devoir cliquer 15 fois sur "ok" si le client à les 15 produits...
j'ai testé et compris. tout vient de ce code
C'est normal car à l'ouverture du classeur, j'ai spécifié ceci en rouge
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Worksheet_Activate() maj = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim Chclient As Range If maj = True Then...
pour eviter une boucle sans fin, à la mise a jour des "non"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub Workbook_Open() maj = False If maj = False Then With Sheets("Données Clients") nlfl1 = .Range("b" & .Rows.Count).End(xlUp).Row 'derniere ligne en col B Set plage = .Range("y4:al" & nlfl1) 'on donne une variable à la plage à traiter For Each cell In plage 'on parcoure les cellules If cell <> "oui" Then 'si elles sont différentes de "oui" cell = "non" 'on met "non" End If Next cell End With End If End Sub
je peux donc ajouter un code à la saisie d'un nouveau client, j'essaie et te tiens au courant
ah oki je comprends mieux
Quelques changements,
j'enleve le code à thisworkbook et modifie celui de la premiere feuille ("données clients"), essaies avec ce fichier
Quand j'efface le tableau et fait un nouvelle encodage. Si j'utilise la tabulation pour changer de colonne il me renvoie vers les "oui", "non" des produits.
Pas très pratique
Une proposition basée sur celle de casefayere
sur le fichier j'ai supprimé la colonne Numéro de référence unique et caché la colonne AL de la feuille Données Clients
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 Private Sub Worksheet_Change(ByVal Target As Range) Dim PlageChoix As String, PlageClient As String Dim LastLig As Long If Target.Count = 1 Then Application.ScreenUpdating = False LastLig = Cells(Rows.Count, 3).End(xlUp).Row PlageClient = "C4:V" & LastLig PlageChoix = "X4:AK" & LastLig If Not Intersect(Target, Range(PlageClient)) Is Nothing Then If Target.Row = LastLig Then Application.EnableEvents = False Range("A" & Target.Row).Value = Target.Row - 3 If Range("AL" & Target.Row).Value = 0 Then Range("X4:AK4").Copy Range("X" & LastLig) Range("X" & LastLig & ":AK" & LastLig).Value = "non" End If Application.EnableEvents = True End If ElseIf Not Intersect(Target, Range(PlageChoix)) Is Nothing Then Range("AL" & Target.Row).Value = Application.CountIf(Range("X" & LastLig & ":AK" & LastLig), "oui") If Target.Value = "oui" Then Transfert Target Else Supprime Target End If End If End If End Sub Public Sub Transfert(Targ As Range) Dim LastLig As Long With Sheets("Liste des produits par client") .AutoFilterMode = False LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row + 1 .Cells(LastLig, 1).Value = LastLig - 3 .Range("B" & LastLig & ":C" & LastLig).Value = Range("C" & Targ.Row & ":D" & Targ.Row).Value .Range("D" & LastLig & ":F" & LastLig).Value = Range("G" & Targ.Row & ":I" & Targ.Row).Value .Range("G" & LastLig).Value = Cells(3, Targ.Column).Value End With End Sub Public Sub Supprime(Targ As Range) Dim Plage As Range Dim Prod As String, Nom As String, Prenom As String Prod = Cells(3, Targ.Column).Value Nom = Cells(Targ.Row, 3).Value Prenom = Cells(Targ.Row, 4).Value With Sheets("Liste des produits par client") .AutoFilterMode = False Set Plage = .UsedRange If Plage.Rows.Count > 1 Then Plage.AutoFilter field:=2, Criteria1:=Nom Plage.AutoFilter field:=3, Criteria1:=Prenom Plage.AutoFilter field:=7, Criteria1:=Prod If Plage.Columns(1).SpecialCells(xlCellTypeVisible).Count > 1 Then .Range("A4:A" & Plage.Rows.Count + 4).SpecialCells(xlCellTypeVisible).EntireRow.Delete End If End If .AutoFilterMode = False End With Set Plage = Nothing End Sub
merci à vous deux :-)
Envoyé par mercatog
Pourquoi avoir caché la colonne AL de la feuille Données Clients ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager