Créer 1à1 liste à partir de cellules répondant à des conditions
Résolu/Fermé
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
-
18 juil. 2014 à 12:32
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 - 23 juil. 2014 à 17:03
Le Pingou Messages postés 12182 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 7 novembre 2024 - 23 juil. 2014 à 17:03
A voir également:
- Créer 1à1 liste à partir de cellules répondant à des conditions
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Créer liste déroulante excel - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
10 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 413
18 juil. 2014 à 13:04
18 juil. 2014 à 13:04
Bonjour
En VBA, je ne sais pas, mais ci joint une solution simple avec un codage en colonne E:E
ce système renvoie les valeurs dans les conditions suivantes
__si entre les deux dates il y a plus de cinq jours
__s'il y a une date en B inférieure de plus de 5 jours au jour an cours
Par contre je n'ai pas traité le problème des cellules fusionnées en A car je ne sais pas ce que l'on peut avoir comme info dans les cellules hachurées.(Il y a de toutes façons eu de chance de faire fonctionner le système avec des cellules fusionnées)
https://www.cjoint.com/?DGsneNpdftt
Par ailleurs, bien que je suppose que c'est provisoire, il n'est pas utile de fusionner les cellules à partir de F
crdlmnt
En VBA, je ne sais pas, mais ci joint une solution simple avec un codage en colonne E:E
ce système renvoie les valeurs dans les conditions suivantes
__si entre les deux dates il y a plus de cinq jours
__s'il y a une date en B inférieure de plus de 5 jours au jour an cours
Par contre je n'ai pas traité le problème des cellules fusionnées en A car je ne sais pas ce que l'on peut avoir comme info dans les cellules hachurées.(Il y a de toutes façons eu de chance de faire fonctionner le système avec des cellules fusionnées)
https://www.cjoint.com/?DGsneNpdftt
Par ailleurs, bien que je suppose que c'est provisoire, il n'est pas utile de fusionner les cellules à partir de F
crdlmnt
WeaponEDGE
Messages postés
113
Date d'inscription
vendredi 18 juillet 2014
Statut
Membre
Dernière intervention
21 novembre 2014
9
Modifié par pijaku le 18/07/2014 à 14:40
Modifié par pijaku le 18/07/2014 à 14:40
Bonjour,
Voici une version utilisant le VBA :
Pour allimenter la liste je me suis basé sur le fait qu'il y ai un commentaire ou non.
Mais ça peux très bien se faire en calculant la différence entre les 2 dates.
https://www.cjoint.com/?0GsnUeXuHRh
Petite question : comment vous faites pour mettre votre fichier en lien hypertext.
Moi je me contente de le mettre en gras mais avec le lien c'est encore mieux. ;-)
Voici une version utilisant le VBA :
Pour allimenter la liste je me suis basé sur le fait qu'il y ai un commentaire ou non.
Mais ça peux très bien se faire en calculant la différence entre les 2 dates.
https://www.cjoint.com/?0GsnUeXuHRh
Petite question : comment vous faites pour mettre votre fichier en lien hypertext.
Moi je me contente de le mettre en gras mais avec le lien c'est encore mieux. ;-)
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 413
Modifié par Vaucluse le 18/07/2014 à 13:59
Modifié par Vaucluse le 18/07/2014 à 13:59
Salut weapon
lors du dépôt de fichier, clic droit sur le lien affiché, copier le lien et coller ici
en principe ça fonctionne bien (.. mais pas toujours)
crdlmnt
lors du dépôt de fichier, clic droit sur le lien affiché, copier le lien et coller ici
en principe ça fonctionne bien (.. mais pas toujours)
crdlmnt
WeaponEDGE
Messages postés
113
Date d'inscription
vendredi 18 juillet 2014
Statut
Membre
Dernière intervention
21 novembre 2014
9
18 juil. 2014 à 14:01
18 juil. 2014 à 14:01
Ok, Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
18 juil. 2014 à 14:41
18 juil. 2014 à 14:41
Salut,
Suffit de ne pas le mettre en gras..... Message modifié.
Mes amitiés à Vaucluse
Suffit de ne pas le mettre en gras..... Message modifié.
Mes amitiés à Vaucluse
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
Modifié par Theo.R le 18/07/2014 à 14:34
Modifié par Theo.R le 18/07/2014 à 14:34
Merci pour vos réponses rapides !
Pour Vaucluse :
les formules semblent ok, par contre je ne veux pas de vides dans ma liste, en plus ça m'oblige à ajouter une colonne (même si je peux contourner ce pb là).
Pour WeaponEDGE :
Qu'entendez-vous par "le fait qu'il y ait un commentaire" ?
Le code fonctionne très bien sur l'exemple, merci ! Néanmoins, je pensais pouvoir l'adapter pour changer le nom des cellules/colonnes mais je n'y comprend rien :/
En bref : serait-il possible d'avoir le même résultat avec les dispositions suivantes :
- l'espace des colonnes à remplir (A à D dans mon exemple) est situé dans une AUTRE feuille que la liste à obtenir, voici les références plus précises :
Les colonnes de saisie des infos (avant A à D) se trouvent dans une feuille nommée "Suivi Offres en attente" avec la répartition suivante :
- La colonne client est la colonne E (et non plus A), commençant en E2 jusqu'à indéterminé (E9000 si besoin de définir une limite)
- La colonne Date de demande est la colonne M (et non plus B), idem M2:... M9000?
- La colonne Date de remise est la colonne N (et non plus C), idem N2:...M9000?
- La colonne Raisons du retard est la colonne O (et non plus D), idem O2:...O9000?
Pour la zone où afficher le résultat (avant F à K), elle est dans une feuille nommée "Traitement des demandes", avec la répartition suivante :
- Le premier nom de client à afficher doit se trouver en B9 (fusionnée avec C9 et D9), les prochains en dessous (B10 ; B11 ; Bk..., toujours fusionnée avec Ck et Dk)
- La Raison correspondant au premier nom doit s'afficher en E9, fusionnée avec F9 et G9. Les prochaines étant en E10 ; E11 ; Ek... fusionnée avec Fk et Gk
Voilà merci d'avance !
P.S: si vous n'avez pas le courage de tout reprendre, pouvez-vous juste m'indiquer comment modifier chaque champ "source" dans le code ?
Pour Vaucluse :
les formules semblent ok, par contre je ne veux pas de vides dans ma liste, en plus ça m'oblige à ajouter une colonne (même si je peux contourner ce pb là).
Pour WeaponEDGE :
Qu'entendez-vous par "le fait qu'il y ait un commentaire" ?
Le code fonctionne très bien sur l'exemple, merci ! Néanmoins, je pensais pouvoir l'adapter pour changer le nom des cellules/colonnes mais je n'y comprend rien :/
En bref : serait-il possible d'avoir le même résultat avec les dispositions suivantes :
- l'espace des colonnes à remplir (A à D dans mon exemple) est situé dans une AUTRE feuille que la liste à obtenir, voici les références plus précises :
Les colonnes de saisie des infos (avant A à D) se trouvent dans une feuille nommée "Suivi Offres en attente" avec la répartition suivante :
- La colonne client est la colonne E (et non plus A), commençant en E2 jusqu'à indéterminé (E9000 si besoin de définir une limite)
- La colonne Date de demande est la colonne M (et non plus B), idem M2:... M9000?
- La colonne Date de remise est la colonne N (et non plus C), idem N2:...M9000?
- La colonne Raisons du retard est la colonne O (et non plus D), idem O2:...O9000?
Pour la zone où afficher le résultat (avant F à K), elle est dans une feuille nommée "Traitement des demandes", avec la répartition suivante :
- Le premier nom de client à afficher doit se trouver en B9 (fusionnée avec C9 et D9), les prochains en dessous (B10 ; B11 ; Bk..., toujours fusionnée avec Ck et Dk)
- La Raison correspondant au premier nom doit s'afficher en E9, fusionnée avec F9 et G9. Les prochaines étant en E10 ; E11 ; Ek... fusionnée avec Fk et Gk
Voilà merci d'avance !
P.S: si vous n'avez pas le courage de tout reprendre, pouvez-vous juste m'indiquer comment modifier chaque champ "source" dans le code ?
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 413
Modifié par Vaucluse le 18/07/2014 à 14:42
Modifié par Vaucluse le 18/07/2014 à 14:42
A noter: il n'y aura pas de vide dans la liste éditée, comme le montre le tableau dans le fichier... mais restez avec Weapon en VBA, c'est sans doute mieux
Bonne route
Bonne route
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
Modifié par Theo.R le 18/07/2014 à 14:56
Modifié par Theo.R le 18/07/2014 à 14:56
Ah j'avais mal compris le fonctionnement de votre solution ! En fait elle marche !
Merci ;)
WeaponEDGE je n'ai plus besoin du code adapté du coup :)
Merci encore une fois de votre aide à tous les deux !
Au plaisir
Merci ;)
WeaponEDGE je n'ai plus besoin du code adapté du coup :)
Merci encore une fois de votre aide à tous les deux !
Au plaisir
WeaponEDGE
Messages postés
113
Date d'inscription
vendredi 18 juillet 2014
Statut
Membre
Dernière intervention
21 novembre 2014
9
Modifié par pijaku le 18/07/2014 à 16:07
Modifié par pijaku le 18/07/2014 à 16:07
Theo.R,
Voici le code modifié en fonction des critères que tu m'as donné.
Rajoutes dans ton fichier un onglet nommé "Liste Retard"
Les colonnes 1 et 2 seront alimenté par la macro.
J'ai rajouté des commentaires (il apparaitrons en vert lorsque tu copieras le code) pour t'aider à comprendre le code.
Ce qu'il faut savoir si tu veux toucher aux coordonnées :
Cells(1,1) signifie la cellule A1.
les coordonnée sont les suivante : cells(N° Ligne, N°Colonne)
sheets("Suivi Offres en attente").cells(2,1) fait référence à la cellule A2 de la feuille "Suivi Offres en attente")
Pour plus de facilité dans la modification des Macros je rentre toujours le nom des Feuilles dans des variables, à savoir ShtA et ShtB. Si tu dois modifier le nom tu as juste à modifier le contenu de la variable en début de code et ce sera pris en compte pour tous le reste de la macro.
Cette macro est évolutive. Si tu alimentes ton Tableau Source les données seront pris en compte lors du prochain lancement
Et dernière chose. Pour créer un bouton original, télécharge une image n'importe laquelle. Insert là sur ta feuille excel et fais un clique droit dessus puis "Assigner une Macro". clique sur Recap_CD puis OK (LaMacro est maintenant rattaché à l'image). Cliques n'importe où sur ta feuille pour désélectionner l'image et reclique dessus; La Macro se lancera.
Voici le code modifié en fonction des critères que tu m'as donné.
Rajoutes dans ton fichier un onglet nommé "Liste Retard"
Les colonnes 1 et 2 seront alimenté par la macro.
J'ai rajouté des commentaires (il apparaitrons en vert lorsque tu copieras le code) pour t'aider à comprendre le code.
Ce qu'il faut savoir si tu veux toucher aux coordonnées :
Cells(1,1) signifie la cellule A1.
les coordonnée sont les suivante : cells(N° Ligne, N°Colonne)
sheets("Suivi Offres en attente").cells(2,1) fait référence à la cellule A2 de la feuille "Suivi Offres en attente")
Pour plus de facilité dans la modification des Macros je rentre toujours le nom des Feuilles dans des variables, à savoir ShtA et ShtB. Si tu dois modifier le nom tu as juste à modifier le contenu de la variable en début de code et ce sera pris en compte pour tous le reste de la macro.
Sub Recap_CD() 'Nom de la feuille Source ShtA = "Suivi Offres en attente" 'Nom de la feuille Destination ShtB = "Liste Retard" 'Analyse le nombre de ligne occupé dans chaque Tableau Nb_LigneA = Sheets(ShtA).Cells(Rows.Count, 5).End(xlUp).Row Nb_LigneB = Sheets(ShtB).Cells(Rows.Count, 1).End(xlUp).Row 'Mise à Blanc du Tableau Destination For i = 2 To Nb_LigneB Sheets(ShtB).Cells(i, 1) = "" Sheets(ShtB).Cells(i, 2) = "" Next i 'Alimentation du Tableau Destination X = 2 For i = 2 To Nb_LigneA Commentaire = Sheets(ShtA).Cells(i, 4) If Commentaire <> "" Then Sheets(ShtB).Cells(X, 1) = Sheets(ShtA).Cells(i, 5) Sheets(ShtB).Cells(X, 2) = Sheets(ShtA).Cells(i, 15) X = X + 1 End If Next i MsgBox ("Traitement Terminé") End Sub
Cette macro est évolutive. Si tu alimentes ton Tableau Source les données seront pris en compte lors du prochain lancement
Et dernière chose. Pour créer un bouton original, télécharge une image n'importe laquelle. Insert là sur ta feuille excel et fais un clique droit dessus puis "Assigner une Macro". clique sur Recap_CD puis OK (LaMacro est maintenant rattaché à l'image). Cliques n'importe où sur ta feuille pour désélectionner l'image et reclique dessus; La Macro se lancera.
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
18 juil. 2014 à 15:39
18 juil. 2014 à 15:39
Merci beaucoup je vais regarder ça :)
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
22 juil. 2014 à 16:46
22 juil. 2014 à 16:46
Je déterre le sujet fraîchement "résolu" car j'ai un double problème :
N.B: par rapport à mon dernier commentaire, j'ai du décaler mes colonnes M, N et O jusqu'à O, P et Q.
1. j'avais d'abord opté pour la solution avec formules de Vaucluse, qui marchait bien SAUF que l'insertion de ligne dans la feuille de saisie "Suivi Offres en attente" fait planter la colonne avec la formule :
=SI('Suivi Offres en attente'!O2=0;"";SI((AUJOURDHUI()-'Suivi Offres en attente'!O2>DelaiAvantRetard)*('Suivi Offres en attente'!A2="OeA");MAX($A$1:A1)+1;""))
J'ai en effet un saut dans la succession A2 ; A3 ; A4 .... au numéro où j'ai inséré une ligne ..
La solution ne me convient donc plus puisque les utilisateurs de mon document ont besoin de pouvoir insérer des lignes..
2. j'ai alors regardé le code proposé par WeaponEDGE : j'ai bien saisi comment marche les références et j'ai mis à jour le tout, mais quand j'exécute la macro ça n'a aucun effet à part m'afficher la fenêtre "Traitement terminé".
Il me faudrait donc :
1. soit un code permettant en VBA d'étirer en 'Gestion des Retards'!A2:A2000 la formule
=SI('Suivi Offres en attente'!O2=0;"";SI((AUJOURDHUI()-'Suivi Offres en attente'!O2>DelaiAvantRetard)*('Suivi Offres en attente'!A2="OeA");MAX($A$1:A1)+1;""))
2. soit un code VBA reprenant tout depuis le début, i.e me permettant d'afficher en liste sans espaces les références des seules lignes d'un tableau qui répondent à la condition suivante (exemple pris pour la ligne 2) :
(AUJOURDHUI()-'Suivi Offres en attente'!O2>DelaiAvantRetard)*('Suivi Offres en attente'!A2="OeA")
Pour la solution 1, j'ai cherché sur plein de sujets déjà traités, mais je n'ai pas réussi à trouver un code qui marche dans mon cas alors que ça a l'air plutôt simple : étirer une formule par VBA...
Merci d'avance !
N.B: par rapport à mon dernier commentaire, j'ai du décaler mes colonnes M, N et O jusqu'à O, P et Q.
1. j'avais d'abord opté pour la solution avec formules de Vaucluse, qui marchait bien SAUF que l'insertion de ligne dans la feuille de saisie "Suivi Offres en attente" fait planter la colonne avec la formule :
=SI('Suivi Offres en attente'!O2=0;"";SI((AUJOURDHUI()-'Suivi Offres en attente'!O2>DelaiAvantRetard)*('Suivi Offres en attente'!A2="OeA");MAX($A$1:A1)+1;""))
J'ai en effet un saut dans la succession A2 ; A3 ; A4 .... au numéro où j'ai inséré une ligne ..
La solution ne me convient donc plus puisque les utilisateurs de mon document ont besoin de pouvoir insérer des lignes..
2. j'ai alors regardé le code proposé par WeaponEDGE : j'ai bien saisi comment marche les références et j'ai mis à jour le tout, mais quand j'exécute la macro ça n'a aucun effet à part m'afficher la fenêtre "Traitement terminé".
Il me faudrait donc :
1. soit un code permettant en VBA d'étirer en 'Gestion des Retards'!A2:A2000 la formule
=SI('Suivi Offres en attente'!O2=0;"";SI((AUJOURDHUI()-'Suivi Offres en attente'!O2>DelaiAvantRetard)*('Suivi Offres en attente'!A2="OeA");MAX($A$1:A1)+1;""))
2. soit un code VBA reprenant tout depuis le début, i.e me permettant d'afficher en liste sans espaces les références des seules lignes d'un tableau qui répondent à la condition suivante (exemple pris pour la ligne 2) :
(AUJOURDHUI()-'Suivi Offres en attente'!O2>DelaiAvantRetard)*('Suivi Offres en attente'!A2="OeA")
Pour la solution 1, j'ai cherché sur plein de sujets déjà traités, mais je n'ai pas réussi à trouver un code qui marche dans mon cas alors que ça a l'air plutôt simple : étirer une formule par VBA...
Merci d'avance !
Le Pingou
Messages postés
12182
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
7 novembre 2024
1 448
Modifié par Le Pingou le 22/07/2014 à 22:03
Modifié par Le Pingou le 22/07/2014 à 22:03
Bonjour,
J'ai regardé en diagonal et une première question :
Vous dites : pour les lignes dont la Date de la demande a dépassé le DelaiAvantRetard fixé par rapport à aujourd'hui alors que la date de remise n'est pas renseignée
Ne trouvant pas la date [DelaiAvantRetard], quel critère je prends pour dire que la ligne 2 [Client 1] ne dois pas figurer dans le relevé.... ?
J'ai oublié : la structure de la feuille [Gestion des Retards] pour créer la procédure... !
Salutations.
Le Pingou
J'ai regardé en diagonal et une première question :
Vous dites : pour les lignes dont la Date de la demande a dépassé le DelaiAvantRetard fixé par rapport à aujourd'hui alors que la date de remise n'est pas renseignée
Ne trouvant pas la date [DelaiAvantRetard], quel critère je prends pour dire que la ligne 2 [Client 1] ne dois pas figurer dans le relevé.... ?
J'ai oublié : la structure de la feuille [Gestion des Retards] pour créer la procédure... !
Salutations.
Le Pingou
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
22 juil. 2014 à 22:43
22 juil. 2014 à 22:43
Le délai est fixé à 5 jours pour l'instant, dsl de l'imprécision
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12182
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
7 novembre 2024
1 448
22 juil. 2014 à 22:43
22 juil. 2014 à 22:43
Bonjour,
En attendant, j'ai relu la discussion et je pense que la proposition de Vaucluse ou la procédure de WeaponEDGE répondent à votre demande (sauf si vous avez des cellules fusionnées). Toutefois elles doivent être adaptées à la structure de votre classeur et c'est là que se trouve le problème... !
Sans connaitre la structure de votre application cela va être difficile de vous donner la bonne proposition !
En attendant, j'ai relu la discussion et je pense que la proposition de Vaucluse ou la procédure de WeaponEDGE répondent à votre demande (sauf si vous avez des cellules fusionnées). Toutefois elles doivent être adaptées à la structure de votre classeur et c'est là que se trouve le problème... !
Sans connaitre la structure de votre application cela va être difficile de vous donner la bonne proposition !
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
22 juil. 2014 à 22:45
22 juil. 2014 à 22:45
Comme je l'ai précisé dans mon commentaire de relance leurs solutions ne répondent pas totalement à la demande, notamment à cause de l'insertion de ligne (les cellules fusionnées ne posaient pas de pb pour les formules)
--
--
Le Pingou
Messages postés
12182
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
7 novembre 2024
1 448
22 juil. 2014 à 23:00
22 juil. 2014 à 23:00
Bonjour,
Merci, mais pas entièrement d'accord avec : notamment à cause de l'insertion de ligne (les cellules fusionnées ne posaient pas de pb pour les formules)
Mais bon, c'est vous qui voyez... !
Dans le message précédent j'ai mentionnée :
.- la structure de la feuille [Gestion des Retards] pour créer la procédure... !
.- Sans connaitre la structure de votre application cela va être difficile de vous donner la bonne proposition !
Question : Est-ce qu'il y a des fonctions dans les lignes (cellules), des lignes vides, des cellules fusionnées (si oui leur position dans la feuille) à traiter... ?
Merci, mais pas entièrement d'accord avec : notamment à cause de l'insertion de ligne (les cellules fusionnées ne posaient pas de pb pour les formules)
Mais bon, c'est vous qui voyez... !
Dans le message précédent j'ai mentionnée :
.- la structure de la feuille [Gestion des Retards] pour créer la procédure... !
.- Sans connaitre la structure de votre application cela va être difficile de vous donner la bonne proposition !
Question : Est-ce qu'il y a des fonctions dans les lignes (cellules), des lignes vides, des cellules fusionnées (si oui leur position dans la feuille) à traiter... ?
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
22 juil. 2014 à 23:23
22 juil. 2014 à 23:23
Je vous envoie un aperçu demain mais oui il y a quelques formules donnant des stats sur les retards.
--
--
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
23 juil. 2014 à 09:11
23 juil. 2014 à 09:11
Voici le document "copie-conforme" du document que j'utilise :
https://www.cjoint.com/?DGxjiMWsRCu
J'ai donc ajouté la feuille "Gestion des retards" sur laquelle doit apparaître le résultat.
En outre, j'ai laissé la solution de Vaucluse que j'avais utilisée au début et qui fonctionne SAUF en cas d'insertion de ligne (et peu importe les fusions de cellules, d'où mon dernier commentaire Le Pingou).
Des idées pour avoir le bon résultat même en cas d'insertion de ligne ?
Merci d'avance :)
https://www.cjoint.com/?DGxjiMWsRCu
J'ai donc ajouté la feuille "Gestion des retards" sur laquelle doit apparaître le résultat.
En outre, j'ai laissé la solution de Vaucluse que j'avais utilisée au début et qui fonctionne SAUF en cas d'insertion de ligne (et peu importe les fusions de cellules, d'où mon dernier commentaire Le Pingou).
Des idées pour avoir le bon résultat même en cas d'insertion de ligne ?
Merci d'avance :)
WeaponEDGE
Messages postés
113
Date d'inscription
vendredi 18 juillet 2014
Statut
Membre
Dernière intervention
21 novembre 2014
9
23 juil. 2014 à 11:49
23 juil. 2014 à 11:49
Bonjour Theo.R,
Je te propose une nouvelle version en VBA qui répond normalement à toutes tes exigeances.
https://www.cjoint.com/?0GxlL3QQvIM
Le fichier compare la date du jour avec les date de demande puis si la différence est suppérieur au délai mentionné en feuille2 alors il insère les donné dans le taleau en feuille2.
Tu peux fusionner les cellules de la colonne E quand il s'agit d'un même clients
Tu peux insérer des lignes
La seule contrainte est de laisser le mot FIN DE LISTE à la fin de ton tableau dans la colonne client.
Tu peux changer le délai de retard accordé dans la 2nd feulle.
Pour Généré le tout clique sur le bouton GO vert de la première feuille.
Si tu préfères une version paramétrable facilement je peux te créer une 3ème feuille ou tu pourras modifier les données primordiale pour la macro sans avoir à les changer dans le code lui même.
Je te propose une nouvelle version en VBA qui répond normalement à toutes tes exigeances.
https://www.cjoint.com/?0GxlL3QQvIM
Le fichier compare la date du jour avec les date de demande puis si la différence est suppérieur au délai mentionné en feuille2 alors il insère les donné dans le taleau en feuille2.
Tu peux fusionner les cellules de la colonne E quand il s'agit d'un même clients
Tu peux insérer des lignes
La seule contrainte est de laisser le mot FIN DE LISTE à la fin de ton tableau dans la colonne client.
Tu peux changer le délai de retard accordé dans la 2nd feulle.
Pour Généré le tout clique sur le bouton GO vert de la première feuille.
Si tu préfères une version paramétrable facilement je peux te créer une 3ème feuille ou tu pourras modifier les données primordiale pour la macro sans avoir à les changer dans le code lui même.
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
23 juil. 2014 à 14:04
23 juil. 2014 à 14:04
Bonjour WeaponEDGE,
Merci pour ce nouveau code ! Il marche bien ! J'ai juste quelques demandes complémentaires pour qu'il soit parfait :
- j'ai besoin d'ajouter une condition au tri des lignes clients, à savoir : la cellule en A:A doit contenir strictement le texte "OeA", dans le cas contraire, la ligne n'est pas à prendre en compte.
- j'aimerais un saut de ligne plutôt qu'un "&" entre PM et Agent à partir de M5 sur la feuille Gestion des retards
-Bonus : le "fin de la liste" ne m'arrange pas tellement même si je peux faire avec, il n'y a pas de solution pour faire sans ? Le pb est que je l'ai mis pour l'instant en E9000 pour avoir de la marge, mais du coup l'exécution du code met bien plus de temps (30 secondes de freeze).
Voilà merci encore pour votre aide, j'espère qu'on bouclera pour de bon ce dossier ;)
Merci pour ce nouveau code ! Il marche bien ! J'ai juste quelques demandes complémentaires pour qu'il soit parfait :
- j'ai besoin d'ajouter une condition au tri des lignes clients, à savoir : la cellule en A:A doit contenir strictement le texte "OeA", dans le cas contraire, la ligne n'est pas à prendre en compte.
- j'aimerais un saut de ligne plutôt qu'un "&" entre PM et Agent à partir de M5 sur la feuille Gestion des retards
-Bonus : le "fin de la liste" ne m'arrange pas tellement même si je peux faire avec, il n'y a pas de solution pour faire sans ? Le pb est que je l'ai mis pour l'instant en E9000 pour avoir de la marge, mais du coup l'exécution du code met bien plus de temps (30 secondes de freeze).
Voilà merci encore pour votre aide, j'espère qu'on bouclera pour de bon ce dossier ;)
WeaponEDGE
Messages postés
113
Date d'inscription
vendredi 18 juillet 2014
Statut
Membre
Dernière intervention
21 novembre 2014
9
23 juil. 2014 à 14:30
23 juil. 2014 à 14:30
En fait le mot "FIN DE LA LISTE" doit être positionné juste après le dernier client ?
Quand vous insérez des lignes il descendra naturellement.
Le "FIN DE LA LISTE" peux être surpprimé à condition qu'il y ait une colonne dont les information sont systématiquement rempli (où il n'y a pas de blanc).
En fait pour calculer combien de ligne fait le tableau La macro se positonne sur la dernière ligne de la colonne 5 et effectue l'équivalent CTRL+SHIFT+Flêche du haut.
ce qui à par incidence de remmonter le curseur jusqu'à la première cellule de pleine.
ça fonctionne bien si le dernier client n'est pas une cellule fucionné, mais dans votre exemple il y a 3 cellule fucionné donc pour lui la fin du tableau se situera sur la permière ligne du dernier client au lieu de la 3eme. c'est pour celà que j'ai rajouté le terme (après j'ai mis FIN DE LISTE mais vous pauvez mettre ce que vous voulez, sauf du vide)
Je suppose que la colonne date de demande est forcément remplie, Si vous me confirmez j'axerais le calcul sur cette colonne et le terme pourra disparaitre.
Il n'y a pas de soucis pour ajouter le critère OeA.
A la place du "&" je peux mettre un espace à la place. En revanche je sais pas coder un retour à la ligne en VBA (et oui mes connaisses sont limités :-) ).
Quand vous insérez des lignes il descendra naturellement.
Le "FIN DE LA LISTE" peux être surpprimé à condition qu'il y ait une colonne dont les information sont systématiquement rempli (où il n'y a pas de blanc).
En fait pour calculer combien de ligne fait le tableau La macro se positonne sur la dernière ligne de la colonne 5 et effectue l'équivalent CTRL+SHIFT+Flêche du haut.
ce qui à par incidence de remmonter le curseur jusqu'à la première cellule de pleine.
ça fonctionne bien si le dernier client n'est pas une cellule fucionné, mais dans votre exemple il y a 3 cellule fucionné donc pour lui la fin du tableau se situera sur la permière ligne du dernier client au lieu de la 3eme. c'est pour celà que j'ai rajouté le terme (après j'ai mis FIN DE LISTE mais vous pauvez mettre ce que vous voulez, sauf du vide)
Je suppose que la colonne date de demande est forcément remplie, Si vous me confirmez j'axerais le calcul sur cette colonne et le terme pourra disparaitre.
Il n'y a pas de soucis pour ajouter le critère OeA.
A la place du "&" je peux mettre un espace à la place. En revanche je sais pas coder un retour à la ligne en VBA (et oui mes connaisses sont limités :-) ).
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
23 juil. 2014 à 14:49
23 juil. 2014 à 14:49
En fait, les utilisateurs de la feuille "Suivi Offres en attente" remplissent petit à petit les lignes, l'insertion étant utile pour revenir entre des lignes déjà saisies. Donc le "Fin de la liste" n'ira pas de lui même en dessous si les lignes sont simplement remplies petit à petit.
Petite précision : le client dans la colonne E peut être fusionné, mais ce n'est pas le cas des colonnes A, O, P et Q. En clair, si j'ai un même client fusionné sur E1:E10, alors j'aurai des lignes remplies entre E2 et E10, la différence étant que je n'aurai plus "OeA" en A, ni les dates/raisons renseignées en O, P et Q. Mais il y aura d'autres colonne renseignées, comme la L par exemple.
J'attends votre nouveau code avec la condition OeA en colonne A du coup
Pour le saut de ligne ou "&", tant pis, en attendant merci de mettre un "/" plutôt qu'un "&".
Merci d'avance,
Petite précision : le client dans la colonne E peut être fusionné, mais ce n'est pas le cas des colonnes A, O, P et Q. En clair, si j'ai un même client fusionné sur E1:E10, alors j'aurai des lignes remplies entre E2 et E10, la différence étant que je n'aurai plus "OeA" en A, ni les dates/raisons renseignées en O, P et Q. Mais il y aura d'autres colonne renseignées, comme la L par exemple.
J'attends votre nouveau code avec la condition OeA en colonne A du coup
Pour le saut de ligne ou "&", tant pis, en attendant merci de mettre un "/" plutôt qu'un "&".
Merci d'avance,
WeaponEDGE
Messages postés
113
Date d'inscription
vendredi 18 juillet 2014
Statut
Membre
Dernière intervention
21 novembre 2014
9
Modifié par WeaponEDGE le 23/07/2014 à 15:40
Modifié par WeaponEDGE le 23/07/2014 à 15:40
Bon, J'ai trouvé une solution pour supprimer la FIN DE LISTE:
Contraintes : En ligne 1 il ne doit y avoir que les titres du Tableau il ne faut pas d'autres donnée sur la droite du Tableau.
Logique d'exécution : La macro compte le nombre de colonne que comporte le Tableau par rapport au dernier titre renseigné (Le plus à droite).
A partir de ce moment là, il va calculer le nombre de ligne pour chaque colonne et va utiliser comme référence le plus élevé.
Le condition OeA à été ajouté (ATTENTION les minuscule et majuscule sont pris en compte, "OEA" ne fonctionnera pas)
Le "&" à été remplacé par "/"
Ci joint le Fichier
https://www.cjoint.com/?0GxpNsOKTIL
Contraintes : En ligne 1 il ne doit y avoir que les titres du Tableau il ne faut pas d'autres donnée sur la droite du Tableau.
Logique d'exécution : La macro compte le nombre de colonne que comporte le Tableau par rapport au dernier titre renseigné (Le plus à droite).
A partir de ce moment là, il va calculer le nombre de ligne pour chaque colonne et va utiliser comme référence le plus élevé.
Le condition OeA à été ajouté (ATTENTION les minuscule et majuscule sont pris en compte, "OEA" ne fonctionnera pas)
Le "&" à été remplacé par "/"
Ci joint le Fichier
https://www.cjoint.com/?0GxpNsOKTIL
Theo.R
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
31
Modifié par Theo.R le 23/07/2014 à 16:11
Modifié par Theo.R le 23/07/2014 à 16:11
Super boulot, ça marche à merveille !! Même sans mettre le "Fin de la liste", et je gagne du temps de calcul à ne faire que les lignes non vides !
Qu'appelez-vous "la droite du Tableau" ? mon tableau a des colonnes de A jusqu'à AC, la ligne 1 étant les titres oui.
J'allais cocher résolu, mais je viens de me rendre compte que ce code n'affiche pas avec le nom du client le n° de ligne concernée :/ (j'y arrivais avec les formules..)
Une ultime solution ?
A bientôt
Qu'appelez-vous "la droite du Tableau" ? mon tableau a des colonnes de A jusqu'à AC, la ligne 1 étant les titres oui.
J'allais cocher résolu, mais je viens de me rendre compte que ce code n'affiche pas avec le nom du client le n° de ligne concernée :/ (j'y arrivais avec les formules..)
Une ultime solution ?
A bientôt
Le Pingou
Messages postés
12182
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
7 novembre 2024
1 448
23 juil. 2014 à 17:03
23 juil. 2014 à 17:03
Bonjour,
Merci pour le fichier.
Et sans macro......
Dans le sens ou vous insérez des lignes dans le tableau cela modifie les références dans la formule de l'ami Vaucluse (amicales salutations). Je l'ai modifié en utilisant la fonction INDIRECT().
Je vous laisse voir si cela est conforme à vos attentes... !
Le fichier : https://www.cjoint.com/?3Gxra1rGzlX
Merci pour le fichier.
Et sans macro......
Dans le sens ou vous insérez des lignes dans le tableau cela modifie les références dans la formule de l'ami Vaucluse (amicales salutations). Je l'ai modifié en utilisant la fonction INDIRECT().
Je vous laisse voir si cela est conforme à vos attentes... !
Le fichier : https://www.cjoint.com/?3Gxra1rGzlX