Sélection de cellules variables au sein d'une ligne
Fermé
vincl2216
Messages postés
7
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
22 novembre 2012
-
20 nov. 2012 à 12:53
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 22 nov. 2012 à 23:42
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 22 nov. 2012 à 23:42
A voir également:
- Sélection de cellules variables au sein d'une ligne
- Aller à la ligne dans une cellule excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Apparaitre hors ligne instagram - Guide
11 réponses
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
20 nov. 2012 à 14:10
20 nov. 2012 à 14:10
J'avoue ne pas tout comprendre ..
Les sous-tototaux se trouve à droite de chaque ligne ou en-dessous d'une colonne ou quelque part dans une colonne ?
Explique avec un dessin ou en montrant ton code et/ou ton classeur, car là, j'ai du mal
Les sous-tototaux se trouve à droite de chaque ligne ou en-dessous d'une colonne ou quelque part dans une colonne ?
Explique avec un dessin ou en montrant ton code et/ou ton classeur, car là, j'ai du mal
vincl2216
Messages postés
7
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
22 novembre 2012
20 nov. 2012 à 15:15
20 nov. 2012 à 15:15
Heliotte,
Ci-dessous, un exemple restraint (j'ai supprimé pas mal de colonne et lignes) de mon résultat sous-total
Acquisiteur N°Dossier N°Envoi PoidsBrut CodeVente Montant
NEU 237825 468063 5560 1000 218.67
NEU 237825 468063 5560 10010 14.08
NEU 237825 468063 5560 1003 930
Total 468063 1162.75
Donc à chaque changement de n°envoi, je fais la somme de la colonne montant (en réalité, je fais la somme de multiples colonnes)
Ce que je voudrais c'est reprendre sur chaque ligne de sous-total, l'acquisiteur, le n°de dossier, le poidsbrut, ... en gros, chaque ligne qui reste vierge après mon sous-total.
Le problème c'est que mon classeur à +/- 5000 lignes et que les colonnes vide sont également variable.
Si je fais une condition en disant à chaque ligne de sous-total, si le champ est vide, copie le champ du dessus, c'est très long.
Existe-t-il une méthode rapide pour compléter ces champs ?
Merci
vinc
Ci-dessous, un exemple restraint (j'ai supprimé pas mal de colonne et lignes) de mon résultat sous-total
Acquisiteur N°Dossier N°Envoi PoidsBrut CodeVente Montant
NEU 237825 468063 5560 1000 218.67
NEU 237825 468063 5560 10010 14.08
NEU 237825 468063 5560 1003 930
Total 468063 1162.75
Donc à chaque changement de n°envoi, je fais la somme de la colonne montant (en réalité, je fais la somme de multiples colonnes)
Ce que je voudrais c'est reprendre sur chaque ligne de sous-total, l'acquisiteur, le n°de dossier, le poidsbrut, ... en gros, chaque ligne qui reste vierge après mon sous-total.
Le problème c'est que mon classeur à +/- 5000 lignes et que les colonnes vide sont également variable.
Si je fais une condition en disant à chaque ligne de sous-total, si le champ est vide, copie le champ du dessus, c'est très long.
Existe-t-il une méthode rapide pour compléter ces champs ?
Merci
vinc
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 20/11/2012 à 18:36
Modifié par lermite222 le 20/11/2012 à 18:36
Bonjour,
Je confirme la demande d' Heliotte, c'est pas clair du tout malgré ton exemple.
Tu pourrais peut-être mettre un exemple de ton classeur (sans donnée confidentielle) sur Cjoint.com ? (ou ailleurs)
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Je confirme la demande d' Heliotte, c'est pas clair du tout malgré ton exemple.
Tu pourrais peut-être mettre un exemple de ton classeur (sans donnée confidentielle) sur Cjoint.com ? (ou ailleurs)
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
vincl2216
Messages postés
7
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
22 novembre 2012
21 nov. 2012 à 09:26
21 nov. 2012 à 09:26
Bonjour,
désolé pour la mauvaise explication, ci-joint, un lien pour un extrait de mon classeur.
https://www.cjoint.com/?0KvjxSzQP8v
En module 1, ma macro avec condition "IF", sur le classeur complet, c'est très long.
En module 2, ma tentative pour accélérer le procéder en ne déterminant qu'une fois les colonnes vides.
J'ai mis une feuille dans le classeur avec un début de résultat souhaité en rouge.
Merci de votre aide et de votre patience
vinc
désolé pour la mauvaise explication, ci-joint, un lien pour un extrait de mon classeur.
https://www.cjoint.com/?0KvjxSzQP8v
En module 1, ma macro avec condition "IF", sur le classeur complet, c'est très long.
En module 2, ma tentative pour accélérer le procéder en ne déterminant qu'une fois les colonnes vides.
J'ai mis une feuille dans le classeur avec un début de résultat souhaité en rouge.
Merci de votre aide et de votre patience
vinc
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 nov. 2012 à 14:48
21 nov. 2012 à 14:48
Bizarre ton truc...
Toutes tes lignes sont doublées et tes "sous-totaux" qui n'en sont pas ne prennent pas de calcul, mais répète juste la valeur d'une des deux lignes.
Dans ta macro tu teste si la cellule est égale à "Total" mais il n'y a aucune cellule comme ça, elles sont toutes avec "Total xxxxxx " où les x sont un nombre.
???
A+
Toutes tes lignes sont doublées et tes "sous-totaux" qui n'en sont pas ne prennent pas de calcul, mais répète juste la valeur d'une des deux lignes.
Dans ta macro tu teste si la cellule est égale à "Total" mais il n'y a aucune cellule comme ça, elles sont toutes avec "Total xxxxxx " où les x sont un nombre.
???
A+
vincl2216
Messages postés
7
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
22 novembre 2012
21 nov. 2012 à 16:19
21 nov. 2012 à 16:19
Bonjour,
Pour les lignes doublées, en fait, toutes les données ne sont pas doublées, voir par exemple la colonne montant ainsi que toutes les colonnes à partir de la colonne "O".
Pour les sous-totaux, je fais en premier lieu le sous-total (via la fonction en excel) à chaque changement d'envoi. Je sélectionne ensuite toute ma feuille que je viens coller dans une nouvelle feuille en valeur (d'où le fait que la formule sous-total n'apparait plus)
Dans la macro, je teste la valeur de la cellule "Total" en indiquant que cette valeur ne doit être que les 5 premiers caractère en partant de la gauche de la cellule. Donc pour une cellule " Total xxx", il teste sur les 5 premiers caractères à gauche : "Total"
Vous pouvez faire tourner la macro "complète_via_condition_if", elle marche très bien mais est très longue. cela vous donnera peut-être une meilleure vue de ce que je souhaite obtenir.
Merci
vinc
Pour les lignes doublées, en fait, toutes les données ne sont pas doublées, voir par exemple la colonne montant ainsi que toutes les colonnes à partir de la colonne "O".
Pour les sous-totaux, je fais en premier lieu le sous-total (via la fonction en excel) à chaque changement d'envoi. Je sélectionne ensuite toute ma feuille que je viens coller dans une nouvelle feuille en valeur (d'où le fait que la formule sous-total n'apparait plus)
Dans la macro, je teste la valeur de la cellule "Total" en indiquant que cette valeur ne doit être que les 5 premiers caractère en partant de la gauche de la cellule. Donc pour une cellule " Total xxx", il teste sur les 5 premiers caractères à gauche : "Total"
Vous pouvez faire tourner la macro "complète_via_condition_if", elle marche très bien mais est très longue. cela vous donnera peut-être une meilleure vue de ce que je souhaite obtenir.
Merci
vinc
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
21 nov. 2012 à 19:01
21 nov. 2012 à 19:01
Bonsoir,
1) pourquoi faire des "sous-totaux" sur des colonne tel que "types d'envoi", "m³", "m²", "mètres plancher", "facturé", "date création", "n° dossier", "n° d'envoi", "date enlèvement", "nombre colis", "type colis" et "poids brut" ?
ces "sous-totaux" n'en sont pas et sont totalement inutiles.
2) pour accélérer l'exécution d'une macro (à ne faire qu'à partir du moment où l'on est certain qu'il n'y aura plus de bugs!), il faut ajouter "screen.updating = true/false" à deux endroit de la macro
3) je ferais tourner la macro pour les "sous-totaux" de la colonne "montant" et les colonnes 15 à 24 (O à X)
1) pourquoi faire des "sous-totaux" sur des colonne tel que "types d'envoi", "m³", "m²", "mètres plancher", "facturé", "date création", "n° dossier", "n° d'envoi", "date enlèvement", "nombre colis", "type colis" et "poids brut" ?
ces "sous-totaux" n'en sont pas et sont totalement inutiles.
2) pour accélérer l'exécution d'une macro (à ne faire qu'à partir du moment où l'on est certain qu'il n'y aura plus de bugs!), il faut ajouter "screen.updating = true/false" à deux endroit de la macro
3) je ferais tourner la macro pour les "sous-totaux" de la colonne "montant" et les colonnes 15 à 24 (O à X)
vincl2216
Messages postés
7
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
22 novembre 2012
22 nov. 2012 à 09:18
22 nov. 2012 à 09:18
Bonjour,
1° Je ne souhaite pas faire de sous-totaux sur les colonnes mentionnées mais juste une copie de la valeur qui se trouve sur la ligne au dessus de mon sous-total. Ligne 5 = ligne 4 pour les colonnes 1 à 7 - 9 à 12 et 14.
C'est ce que je fais avec ma condition "IF" mais qui est très long.
2° Pourrais tu m'expliquer le principe de "screen.updating = true/false" ?
Merci
1° Je ne souhaite pas faire de sous-totaux sur les colonnes mentionnées mais juste une copie de la valeur qui se trouve sur la ligne au dessus de mon sous-total. Ligne 5 = ligne 4 pour les colonnes 1 à 7 - 9 à 12 et 14.
C'est ce que je fais avec ma condition "IF" mais qui est très long.
2° Pourrais tu m'expliquer le principe de "screen.updating = true/false" ?
Merci
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
22 nov. 2012 à 10:08
22 nov. 2012 à 10:08
Bonjour,
1) Je suis tout à fait contre le fait de recopier les informations .. bêtement pour copier, car la redondance gratuite d'informations .. ben, on est sensé la supprimer ==> donc, si tu veux continuer à faire des copies de données, libre à toi, mais ne vient pas te plaindre que cela dure et dure encore (ça c'est fait)
2) le principe de "screen.updating", c'est que l'écran se fige pendant le temps d'exécution de la macro et à la fin de son exécution, tu libère l'écran. Car c'est l'affichage à l'écran de divers informations (en ce compris le 'scrollage' (défilement)) qui pompe énormément de temps.
Pour cette raison, on évite d'afficher des informations non utile que, de toute façon, tu n'as pas le temps de visualiser correctement (en règle générale).
1) Je suis tout à fait contre le fait de recopier les informations .. bêtement pour copier, car la redondance gratuite d'informations .. ben, on est sensé la supprimer ==> donc, si tu veux continuer à faire des copies de données, libre à toi, mais ne vient pas te plaindre que cela dure et dure encore (ça c'est fait)
2) le principe de "screen.updating", c'est que l'écran se fige pendant le temps d'exécution de la macro et à la fin de son exécution, tu libère l'écran. Car c'est l'affichage à l'écran de divers informations (en ce compris le 'scrollage' (défilement)) qui pompe énormément de temps.
Pour cette raison, on évite d'afficher des informations non utile que, de toute façon, tu n'as pas le temps de visualiser correctement (en règle générale).
vincl2216
Messages postés
7
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
22 novembre 2012
22 nov. 2012 à 12:03
22 nov. 2012 à 12:03
Heliotte,
1) je copie car au final, je ne souhaiterais garder que les lignes "sous-total" mais chaque champ est important pour moi, c'est pourquoi je souhaite copier et chercher une solution pour gagner un peu de temps. En évitant par exemple de passer à chaque fois sur chaque ligne pour controler qu'elle soit vide mais en ne cherchant qu'une fois les vide et applique le copier coller à chaque sous-total
2) Merci beaucoup pour l'info, je vais l'inclure dans la macro car en effet, je n'ai pas besoin de voir le défilement à l'écran
merci
vinc
1) je copie car au final, je ne souhaiterais garder que les lignes "sous-total" mais chaque champ est important pour moi, c'est pourquoi je souhaite copier et chercher une solution pour gagner un peu de temps. En évitant par exemple de passer à chaque fois sur chaque ligne pour controler qu'elle soit vide mais en ne cherchant qu'une fois les vide et applique le copier coller à chaque sous-total
2) Merci beaucoup pour l'info, je vais l'inclure dans la macro car en effet, je n'ai pas besoin de voir le défilement à l'écran
merci
vinc
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 244
Modifié par eriiic le 22/11/2012 à 12:26
Modifié par eriiic le 22/11/2012 à 12:26
Bonjour,
1) je copie car au final, je ne souhaiterais garder que les lignes "sous-total"
Et pourquoi ne pas le dire directement ???
Trop tard...
Ci-joint un code qui fait passer de 20s à 5s, et un second qui fait passer à 0.5s.
Je dois partir, je te laisse modifier pour ne mettre que la ligne qui t'intéresse.
Une fois complétée dans la boucle il suffit de la coller en dernière ligne dans une feuille dédiée
https://www.cjoint.com/?BKwmr0dF3oO
eric
PS: j'ai oublié le ScreenUpdating = False dans le 2nd code, rajoute le
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
1) je copie car au final, je ne souhaiterais garder que les lignes "sous-total"
Et pourquoi ne pas le dire directement ???
Trop tard...
Ci-joint un code qui fait passer de 20s à 5s, et un second qui fait passer à 0.5s.
Je dois partir, je te laisse modifier pour ne mettre que la ligne qui t'intéresse.
Une fois complétée dans la boucle il suffit de la coller en dernière ligne dans une feuille dédiée
https://www.cjoint.com/?BKwmr0dF3oO
eric
PS: j'ai oublié le ScreenUpdating = False dans le 2nd code, rajoute le
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
vincl2216
Messages postés
7
Date d'inscription
mardi 20 novembre 2012
Statut
Membre
Dernière intervention
22 novembre 2012
22 nov. 2012 à 17:15
22 nov. 2012 à 17:15
Bonjour,
Merci beaucoup pour votre patience, c'est tout à fait le code dont j'avais besoin.
vinc
Merci beaucoup pour votre patience, c'est tout à fait le code dont j'avais besoin.
vinc
Heliotte
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
92
22 nov. 2012 à 23:42
22 nov. 2012 à 23:42
Je rappel: "screenUpdating = false" UNIQUEMENT quand on est certain de ne plus avoir de bug !
Sinon, t'es partis pour des heures d'amusement :)
Sinon, t'es partis pour des heures d'amusement :)