Insertion automatique et conditionnelle d'une [Résolu/Fermé]

Signaler
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
-
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
-
Bonjour à tous,

J'utilise des fichiers d'adresses triés par liasses en publipostage sous Word pour imprimer des étiquettes adresses.
Dans Excel, à chaque début de liasse, apparait un "X" dans une colonne destinée à cet effet.
Ma question est de savoir s'il est possible à chaque fois qu'apparait le "X", il est possible sans utiliser de macro d'insérer une ligne vide (dans un premier temps)juste au dessus , ceci afin de créer un séparation.
Si c'est faisable, j'aimerais que cette ligne génère un étiquette avec un message d'alerte quelconque pour faciliciter la séparation des liasses.

Merci d'avance pour vos lumières.

4 réponses

Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
Non, une ligne vide dans une base de données signifie que la base de données est terminée. Pour rester généraliste, il faut éviter toute fioriture inutile dans les bases de données (lignes inutiles, fusion de cellules, formats spéciaux, ...)
Patrice
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
Par contre, rien n'interdit d'utiliser un filtre !
Bonjour Patrice 33740,

Merci de ta réponse si rapide, mais si tu pouvais m'en dire plus sur les filtres, ça m"intéresse.

Tu vas dire que j'insiste, mais si le "X" commande l'insertion d"une ligne remplie de "X' dans chaque champ, c'est pareil ou pas ?

Cordialement.
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
Pas de ligne inutile donc pas de ligne de X.

Si tu as des colonnes avec des X qui permettent d'identifier chaque liasse, en mettant un filtre automatique, tu n'ajouteras pas de ligne mais tu pourras n'afficher qu'une liasse au choix.

Parfois, il est plus simple de changer de méthode de travail, plutôt que persister dans des voies aux issues aussi incertaines et que problématiques.
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
1
Bonjour,

Quand tu écris: " Parfois, il est plus simple de changer de méthode de travail, plutôt que persister dans des voies aux issues aussi incertaines et que problématiques" , tu as tout à fait raison, c'est pour cela que je demande conseil, et c'est un plaisir sur ce forum de rencontrer autant de solidarité et de qualité.

Moi, j'image des choses à partir de choses que je crois savoir faire, et je suis tout à fait partant pour tout mettre au panier pour faire les choses dans les règles. C'est grâce à des personnes comme toi ( et d'autres qui m'ont déjà beaucoup apporté et qui se reconnaitront) que j'ai des chances de progresser.

J'abandonne donc les lignes avec des"x".

Je pense à ta lecture que je me suis encore une fois mal exprimé; en fait, je ne veux pas afficher une liasse spécialement, je cherche à intercaler entre les étiquettes au moment de l'impression une étiquette de séparation .

Je vais essayer d'être le plus clair possible .

Mon problème est à la fois simple et compliqué ( ça commence bien).

Mon but est de faire du tri postal avec des personnes qui n'ont pas accès à la lecture ni au calcul et tout cela en utilisant une machine qui mes des brochures sous film plastique. Sur cette brochure ( et sous le film), la machine dépose un porte-adresse. Je peux donc avoir 50 ou 60 000 adresses imprimées. Jusqu'ici pas de problème.
Là où ça devient moins évident, c'est que ces adresses sont à regrouper par liasses(10, 20, 50 ou 100 ex ou plus) en sortant de la machine et le "X" que je rajoute dans ma colonne n'est pas toujours bien visible. D'où l'idée d'intercaler entre chaque liasse un porte adresse rempli de"X" ( et donc beaucoup facile à distinguer. Jusqu'ici, avec mes collègues, nous insérions des étiquettes de couleur dans les piles d'étiquettes à cet endroit. À la sortie de la machine, c'est l'étiquette qui fait la séparation. Je voudrais améliorer le truc tout en restant dans une logique de production et continuer ainsi à prouver que le handicap n'est pas incompatible avec qualité et fiabilité du travail accompli.

Pour le tirages moyens, l'insertion des plis sous pochettes plastiques se fait à la main, c'est là où mes fameux "X" imprimés sur les porte - adresses prennent toute leur importance puisque la vitesse est moindre évidemment qu'avec la machine et donc facilement identifiables. Ca marche bien, et mes " p 'tis gars" adorent ce type de boulot, côté qualité, c'est impeccable. Bref, tout le monde est content. Ma démarche est peut être un peu militante, mais comme ils disent chez l'Oréal: "Ils le valent bien".

Voilà, je pense que tu sais tout, mais je pense que je vais continuer à mettre mes étiquettes de couleur à la main.

Quoiqu'il en soit, merci pour tes indications précieuses.

Cordialement.
Messages postés
23485
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2020
6 349
Bonjour,

Une proposition suite à tes explications.
Une macro pour mettre les XXXX, une pour les enlever.
Au début 3 constantes pour adapter à ta feuille.
Saisir 0 dans l'inputbox pour quitter la macro sans insérer.

Option Explicit

Const nbColAdr As Long = 5 ' nombre de colonnes à remplir avec le motif
Const motif As String = "XXXXX" ' motif
Const ligneDeTitre = 1 ' nombre de lignes de titre de colonne
Sub insertXXXXX()
    Dim nb As Long, lig As Long
    nb = Application.InputBox(Title:="Saisir le nombre d'exemplaires à regrouper", prompt:="Taille des liasses", Type:=1)
    Application.ScreenUpdating = False
    While lig < [A65536].End(xlUp).Row
        If nb > 0 Then
            lig = lig + nb + 1 + IIf(lig < nb, ligneDeTitre, 0)
            Rows(lig).Insert Shift:=xlDown
            Cells(lig, 1).Resize(1, nbColAdr) = motif
        End If
    Wend
    Application.ScreenUpdating = True
End Sub

Sub suppXXXXX()
    Dim lig As Long
    Application.ScreenUpdating = False
    For lig = [A65536].End(xlUp).Row To 2 Step -1
        If Cells(lig, 1) = motif Then Rows(lig).Delete Shift:=xlUp
    Next lig
    Application.ScreenUpdating = True
End Sub

A mettre dans la feuille concernée
eric
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
1
Bonjour Eriiic,

Merci pour ta réponse tu es la preuve s'il en fallait une que je ne joue pas dans la même division que toi, Patrice et beaucoup d'autres sur ce forum.
En effet, je n'y connais rien en macros, je ne sais même pas où il faudrait copier ce que tu m'envoies,ni ce que ça peut donner.
Je suis désolé de t'avoir fait perdre ton temps, en fait, je suis vraiment une grosse buse qui demande de l'aide et qui éconduit les gens sympas qui lui répondent.
Vraiment, je suis désolé, mais je te remercie d'avoir passé du temps à te pencher sur ce problème. Je pense que je vais essayer la proposition de Patrice qui me parle mieux.

J'espère que tu ne m'en voudras pas.

Cordialement.
Messages postés
23485
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2020
6 349
Bonjour,

Pas de problème comme patrice a réussi par formule (solution maligne ;-) )

Un fichier exemple quand même pour la macro :
http://www.cijoint.fr/cjlink.php?file=cj201110/cijeFkogP5.xls

clic-droit sur le nom d'onglet en bas (Feuil1) et choisir 'visualiser le code' pour accéder à la macro.

eric
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
1
Merci Eriic,
Je crois que je vais essayer de m'y mettre.
À bientôt j'espère
Bien Cordialement
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
Avec tes explications, je comprends mieux le problème, sans macro c'est aussi possible en utilisant la fonction tri, pour 1000 à 2000 adresses ça peux aller, mais pour 50 à 60000 adresses les temps de calcul et de tri deviennent gigantesques (plusieurs dizaines de minutes).
Voici un exemple :
https://www.cjoint.com/?AJpwAOUPNjz

Dans ce cas, la meilleure solution pour insérer les lignes de X est d'utiliser une macro.
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
1
Bonjour Patrice

Je pense que je vais essayer ta proposition même si les calculs sont longs, ça devrait prendre moins de temps que d'insérer des trucs à la main. De toute façon je vais essayer pour être sûr que ça puisse être applicable en situation de production. En fait, si j'ai bien compris, tu penses comme Eriiic que le mieux serait une macro. Je pense qu'il va falloir que j'apprenne au moins pour vous remercier.
J'ai bien compris le mode d'emploi de ton exemple, mais si j'osais, je te demanderais de me "traduire" les formules des colonnes A et B car c'est déjà bien costaud pour moi, et j'aime bien comprendre ce que je fais. J'espère que je n'abuse pas trop.
Mille Merci.

Au fait, on voit que le routage ça te dit quelque-chose.

Bien Cordialement.

Patrick
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
Bonjour,

La formule de la colonne B sert à numéroter les liasses (c-à-d les X en colonne F)

La formule de la colonne A comprend 2 volets :
1) pour les lignes contenant une adresse (c-à-d les ligne dont le code postal n'est pas X), elle numérote les adresses successivement (incrément de 1) et , en plus, à chaque nouvelle liasse elle incrémente ce numéro de ligne de la valeur du numéro de liasse (pour laisser la place à la ligne de XXXXX à insérer).
2) pour les lignes de XXXXX ajoutées à la fin de la base de données (c-à-d les dont le code postal est X), elle attribue un numéro de ligne qui correspond à un des emplacements laissés libre par la numérotation des adresses (en 1, ci-dessus).

Le tri fait le reste : il ramène les ligne de XXXXX avant chaque liasse (c-à-d avant chaque X en colonne F)

Cordialement
Patrice
Messages postés
23485
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2020
6 349
Bonsoir tout le monde,

En fait, si j'ai bien compris, tu penses comme Eriiic que le mieux serait une macro. Je pense qu'il va falloir que j'apprenne...
Je t'ai mis ici un fichier exemple pour la macro.
eric
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
1
Bonsoir Patrice,
Grâce à ton aide, j'ai pu mettre mon fichier au point.
J'ai eu quelques problèmes car les lignes vides généraient un "0" qui modifiait la place de ma marque "X" et il manquait des lignes après le tri.
Je te joins 3 liens qui seront plus parlants.
https://www.cjoint.com/?AJttNrwG0bM
https://www.cjoint.com/?AJttO0mLr3o
https://www.cjoint.com/?AJttQla7oGV
Ça vaut ce que ça vaut, mais ça marche, l'important est de comprendre ce qu'on fait.
J'ai pas tout compris, mais petit à petit je pense que ce n'est pas désespéré.
Bien sûr si tu vois des trucs à améliorer, je suis preneur.
Vraiment sans ta contribution, je n'y serais pas arrivé.
Je pense que je vais faire des fichiers de 20 000 plis, en effet, je fais mon publipostage par 4 ex/flle ce qui ne fait que 5000 lignes. j'espère qu'Excel voudra les avaler.

Mille merci et à bientôt j'espère.

Bien Cordialement.
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
Bonsoir,

Voici une autre solution, à partir de ton fichier avant tri :
https://www.cjoint.com/?AJtxeOXHfJz
Cordialement
Patrice
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
1
Bonsoir Patrice,

"Voici une autre solution, à partir de ton fichier avant tri : "

Alors en plus du reste on est modeste? En fait, c'est notre fichier.

Merci pour cette nouvelle version avec des formules plus simples que ce que j'ai pu tirer des mes neurones torturés.
Par contre, quand on fait le tri, il y a des lignes qui disparaissent dans la colonne A (22,48,58,78,etc).
J'ai encore un autre souci, les 3 lignes avec des "X" ne suffisent pas, il faudrait que toutes les lignes vides ( col. C à M )soient remplies de "X", tu crois que c'est possible?

Bien Cordialement.
Patrick
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
« Par contre, quand on fait le tri, il y a des lignes qui disparaissent dans la colonne A (22,48,58,78,etc). »
Rassure-toi, les lignes ne disparaissent pas, pour des raisons de simplicité, j'ai utilisé une formule qui donne des numéros chronologiques mais pas consécutifs : elle saute un numéro à chaque ligne de X

« J'ai encore un autre souci, les 3 lignes avec des "X" ne suffisent pas, il faudrait que toutes les lignes vides ( col. C à M )soient remplies de "X", tu crois que c'est possible? »
Il n'y a aucun problème tu peux remplir de XXXX les cellules Cx à Mx sauf le code postal (col L) dans lequel il ne doit y avoir qu'un seul X.

Cordialement
Patrice
Messages postés
159
Date d'inscription
jeudi 2 mars 2006
Statut
Membre
Dernière intervention
26 novembre 2018
1
Bonjour Patrice,
Pardon de ne t'avoir répondu plus tôt, j'ai été dépassé par les évènements.
Quoiqu'il en soit, ça marche, et c'est grâce à toi.
Mille merci.
Bien Cordialement.
Messages postés
8185
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
12 septembre 2020
1 467
Bon courage, au plaisir de te relire sur le Forum

Cordialement
Patrice