NEXTIF nom différent du précédent

Résolu
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   -  
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans un tableau immodifiable pour cette manip (excel 2010), il y a une liste de noms comme suivant :


NOM1
NOM1
NOM1
NOM1
NOM1
...
NOM2
NOM2
NOM2
NOM2
...
NOM3
NOM3
NOM3
NOM3...
...
NOMN
NOMN
NOMN
NOMN
...

Dans un publipostage, je souhaiterais que s'affiche ceci :

NOM1
NOM2
NOM3
...
NOMN

N n'étant évidemment pas connu (susceptible de changer régulièrement)
Il s'agit en quelque sorte de supprimer les doublons
J'ai bien tenté d'enregistrer un signet "NomPrec" (nom précédent) avec SET et de combiner avec NEXTIF mais je me casse la figure sur la "boucle" qu'il s'agit de définir afin que ne s'affiche que le résultat attendu. Cela ne marche pas, j'aurais besoin d'un peu d'aide svp.

17 réponses

Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Pourquoi ne pas créer sur la liste sans doublons sur Excel (une feuille pour le publipostage) !

0
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Bonjour, et merci Le Pingou

à défaut d'avoir trouvé mieux, j'ai appliqué cette méthode qui, en utilisant la fonction "supprimer les doublons", résoud le problème, mais qui a le double inconvénient de :
- ne pas avoir compris dans quelle mesure c'était possible avec les opérateurs,
- devoir réeffectuer la suppression des doublons dans un autre tableau à chaque fois qu'il est modifié.

Je reste donc ouvert à l'autre solution,

Thanx
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Oui c'était une idée qui marche, personnellement je préfère la mise en place sur Excel sans devoir manipuler Word.
Cependant j'aimerais bien réussir avec votre demande mais je n'ai pas assez d'élément correspondant à votre application, peut-être un petit exemple Excel et Word... !

0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Après quelques recherches il se trouve que pour le publipostage vous devez avoir une base sans doublon.
Avec une procédure (macro) il est simple de mettre à jour les données sur une autre feuille utilisé comme base pour le publipostage.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Bonjour,

Merci pour ton aide!

Pourtant je me disais avec SET pour stocker une valeur, IF, NEXTIF, éventuellement SKIPIF... tous les ingrédients semblent être là pour procéder à cette comparaison "pas à pas".

Mes recherches n'ont pas abouti à une réponse précise, juste quelques pistes qui semblaient s'en rapprocher, par exemple http://www.forum-microsoft.org/topic81484.html
https://support.microsoft.com/fr-fr/help/459169
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci du retour.
C'est avec plaisir que je vais parcourir les 2 liens proposés.
C'est dommage que vous ne puissiez pas me mettre un petit exemple Excel et Word...pour voir la structure de votre application ... !

0
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Hello,

je t'ai envoyé un message privé, merci ;)
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Pouvez-vous expliquer ce qu'il doit y avoir pour le document Word dans le tableau de 135 lignes et dont seulement la première à un champ [nom] .... ?
Cela me parait très étrange comme publipostage...!

0
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Bonjour,

les 135 lignes c'est au pif, au vu du nombre de lignes du tableau. Il faudrait qu'il y ait autant de lignes dans le doc word que de noms uniques dans le tableau
Cela pourrait s'apparenter à un publipostage, le format des étiquettes étant spécial puisque destiné à être dans les porte-étiquettes de ce type de dossier suspendu
https://www.metro.fr/produits-equipements/fournitures-de-bureau/dossier-suspendu-corbeille/dossier-suspendu/support-pour-dossiers-suspendus-10-dossiers-ref109995.html

Et donc il faudrait que dans word, chaque ligne comporte nom, prénom et matricule, et la ligne suivante le nom suivant, prénom suivant, matricule suivant...
J'ai supprimé mes essais, donc désolé effectivement ce n'est pas très parlant.
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour l'information.
Si le publipostage sert à imprimé des étiquettes pour dossiers-suspendu, il faut connaitre les dimensions de l'étiquette supporté par le porte-étiquette et ensuite créer sur le document Word une matrice correspondante d'une page si impression feuille à feuille.

0
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Bon, pour la dimension des étiquettes ce n'est pas un pb, je peux faire une matrice simple de 200 lignes s'il le faut, sans passer par l'option "étiquettes"
La matrice actuelle convient très bien, et les dimensions sont ajustées

le tout est d'arriver à caser ces champs de sorte à ce qu'ils se succèdent, sans doublons
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Non et non il suffit de créer une page A4 et c'est tout et ensuite c'est le publipostage qui incrémentera la matrice selon les besoin.
Je vous fait un exemple fictif y compris la préparation de la liste pour le publipostage.
Patience.
Note: si vous avez devant vous un dossier suspendu il est tout simple de mesurer la largeur et la longueur de l'étiquette du porte étiquette .... qu'en pensez-vous....?
0
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Bonjour,

OK OK :) les mesures avaient été prises et sont quasi conformes aux cellules de ce publipostage : 12,7 x 0,64

Merci et bonne journée
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Je vous transmets votre fichier par MP.
Principe, une procédure mais à jour la feuille [listpublipos] qui sert comme base de données pour le publipostage. La mise à jour est automatique lors de la fermeture du classeur. Ensuite vous ouvrez le document de publipostage [Publipostage_Eti_dos susp_v0.docx] ...suite selon vos préférences... !

0
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Bonjour,

Merci bp, cela semble bien résoudre le problème.
Puis-je poster le code sur ce message, afin que d'autres visiteurs puissent en profiter ?

Encore merci pour cette aide précieuse :)
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Mais oui sans problème.
Bon dimanche.

0
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Bonjour,

Voici donc le code de Le Pingou, sachant que les cellules Nom et Prénom (dont il faut éliminer les doublons) se trouvent respectivement en colonnes O et P dans le tableau initial, et la feuille [listpublipos] à droite de l'onglet du tableau :

Sub listepourpublipostage()
Dim listsd() As String, li As Integer
Set sh = Sheets("Tableau de suivi")
Set shlp = Sheets("listpublipos")
Set ledico = CreateObject("Scripting.Dictionary")
deli = sh.Cells(Rows.Count, 1).End(xlUp).Row
For c = 2 To deli ' In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
If ledico.exists(sh.Cells(c, 15) & sh.Cells(c, 16)) Then
' MsgBox "oui"
Else
' MsgBox "Non"
ledico(sh.Cells(c, 15) & sh.Cells(c, 16)) = ""
ReDim Preserve listsd(0 To 2, 0 To li)
listsd(0, li) = sh.Cells(c, 15).Value
listsd(1, li) = sh.Cells(c, 16).Value
listsd(2, li) = sh.Cells(c, 13).Value
li = li + 1
End If
Next c
With shlp
deli = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Range("a2:C" & deli).ClearContents
.Range("a2:c" & UBound(listsd, 2)) = Application.Transpose(listsd)
.Columns("A:D").Sort Key1:=.Columns(1), Order1:=xlAscending, Header:=xlYes
End With
Set sh = Nothing
Set shlp = Nothing
Set ledico = Nothing
ActiveWorkbook.Save
End Sub

Encore un grand merci et bonne continuation :)
0