Transfert de plusieurs plages de données avec condition
Résolu/Fermé
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
-
27 mars 2015 à 16:23
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 2 mai 2015 à 17:20
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 2 mai 2015 à 17:20
A voir également:
- Transfert de plusieurs plages de données avec condition
- Excel cellule couleur si condition texte - Guide
- We transfert - Guide
- Reinstaller windows sans perte de données - Guide
- Effacer les données de navigation - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
11 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
Modifié par ccm81 le 27/03/2015 à 17:43
Modifié par ccm81 le 27/03/2015 à 17:43
Bonjour
Une tentative à tester (sur la feuille jan02014-1)
https://www.cjoint.com/?3CBr3H6S0Kg
lien modifié
Cdlmnt
Une tentative à tester (sur la feuille jan02014-1)
https://www.cjoint.com/?3CBr3H6S0Kg
lien modifié
Cdlmnt
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
27 mars 2015 à 18:27
27 mars 2015 à 18:27
Bonjour ccm81,
Juste parfait !
Une dernière chose, si tu as le temps bien entendu, est-ce que si tu pourrais ajouter quelques explications à ton code, pour que je puisse le comprendre à 100% et pour moi progresser.
Un grand merci
Bonne soirée
D277
Juste parfait !
Une dernière chose, si tu as le temps bien entendu, est-ce que si tu pourrais ajouter quelques explications à ton code, pour que je puisse le comprendre à 100% et pour moi progresser.
Un grand merci
Bonne soirée
D277
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
27 mars 2015 à 19:02
27 mars 2015 à 19:02
De rien,
Quelques explications
Si c'est fini, merci de mettre le sujet à Résolu (en haut à droite de ton premier message)
Bonne fin de journée
Quelques explications
Option Explicit ' la macro s'applique dans toute feuille active Const cotes = 1 ' colonne n° test Const codeb = 3 ' colonne debut des données Const lgtra = 8 ' nombre de colonne des "tranches" d'essais Const nbtra = 7 ' nombre maxi de tranche d'essais Const lideb = 10 ' première ligne à traiter Public Sub OK() Dim li As Long, lifin As Long, co As Long, plage As Range, k As Long Dim t t = Timer ' desactive la maj de l'ecran Application.ScreenUpdating = False ' depuis la feuille active With ActiveSheet ' ligne de fin de la colonne cotes lifin = .Cells(Rows.Count, cotes).End(xlUp).Row ' on boucle sur les lignes en commençant par la dernière et en remontant For li = lifin To lideb Step -1 ' on boucle sur les tranches en partant de la dernière voir (nbtra-k) For k = 1 To nbtra - 1 ' si la première cellule de la tranche n'est pas vide If .Cells(li, codeb + lgtra * (nbtra - k)) <> "" Then ' insertion d'une ligne avant la ligne li+1 Rows(li + 1).Insert ' selection de la tranche à copier Set plage = .Cells(li, codeb + lgtra * (nbtra - k)).Resize(1, lgtra) ' copie de la plage plage.Copy .Cells(li + 1, codeb) End If Next k Next li End With ' ré-activation de l'affichage Application.ScreenUpdating = True MsgBox "temps mis " & Timer - t & "sec" End Sub
Si c'est fini, merci de mettre le sujet à Résolu (en haut à droite de ton premier message)
Bonne fin de journée
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
1 avril 2015 à 10:08
1 avril 2015 à 10:08
Bonjour ccm81,
Désolé de ne répondre que maintenant, mais je n'ai vraiment pas beaucoup de temps en ce moment. Un grand merci pour tes explications, cela me permettra de progresser. Ma question principale est résolue, mais avant de mettre la balise en tête de post, est-ce que je peux te poser une autre question ?
Car contrairement à la précédente demande, là je ne suis pas sûr que cela soit réalisable mais je voudrais en être certain.
Encore merci
D277
Désolé de ne répondre que maintenant, mais je n'ai vraiment pas beaucoup de temps en ce moment. Un grand merci pour tes explications, cela me permettra de progresser. Ma question principale est résolue, mais avant de mettre la balise en tête de post, est-ce que je peux te poser une autre question ?
Car contrairement à la précédente demande, là je ne suis pas sûr que cela soit réalisable mais je voudrais en être certain.
Encore merci
D277
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
1 avril 2015 à 15:00
1 avril 2015 à 15:00
Pas de problème, du moins tant que tu n'as pas posé la question ;-)
Si ça n'a rien à voir avec le sujet actuel, il vaut quand même mieux ouvrir une nouvelle discussion
Cdlmnt
Si ça n'a rien à voir avec le sujet actuel, il vaut quand même mieux ouvrir une nouvelle discussion
Cdlmnt
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
2 avril 2015 à 12:50
2 avril 2015 à 12:50
Ok, je vais créer un nouveau sujet.
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
2 avril 2015 à 12:58
2 avril 2015 à 12:58
Mais une dernière modif avant de traiter l'autre problème, je ne me suis aperçu que maintenant (malheureusement), que certaines valeurs relatives à certains essais se trouvaient isolées du reste, à partir de la colonne "BG"
Si tu reprends mon premier fichier, il y a quelquefois quelques valeurs qui correspondent à la première colonne de chaque essai. Je m'en suis aperçu car du coup après passage de ton programme, il y avait des cellules vides.
Exemple, si il y a une valeur pour une ligne, pour l'essai 3, cette valeur devrait se trouvait dans la première colonne pour cet essai.
Est-ce qu'il est possible d'ajouter une composante à ta macro pour aller chercher ces valeurs isolées ou vaudrait-il mieux faire une macro à part puis appliquer la tienne ?
Encore merci
D277
Si tu reprends mon premier fichier, il y a quelquefois quelques valeurs qui correspondent à la première colonne de chaque essai. Je m'en suis aperçu car du coup après passage de ton programme, il y avait des cellules vides.
Exemple, si il y a une valeur pour une ligne, pour l'essai 3, cette valeur devrait se trouvait dans la première colonne pour cet essai.
Est-ce qu'il est possible d'ajouter une composante à ta macro pour aller chercher ces valeurs isolées ou vaudrait-il mieux faire une macro à part puis appliquer la tienne ?
Encore merci
D277
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
2 avril 2015 à 19:51
2 avril 2015 à 19:51
Oui mais
1. ces valeurs colonnes 59 à ... dépassent les 7 tranches de 8 valeurs
ce n'était pas prévu
2. ça soulève un autre problème
Test12
essai 3 : il y a bien un trou colonne 3 et une valeur (39.3) colonne 59,
donc là, on peut envisager de déplacer cette valeur en colonne 3
essai 4 : pas de valeurs colonnes 35 à 42 mais une valeur (36.9) colonne 60, qu'est ce qu'on en fait ?
essai 5 : même problème, 41.7 en colonne 61 et pas de valeur colonnes 27 à 34
1. ces valeurs colonnes 59 à ... dépassent les 7 tranches de 8 valeurs
ce n'était pas prévu
2. ça soulève un autre problème
Test12
essai 3 : il y a bien un trou colonne 3 et une valeur (39.3) colonne 59,
donc là, on peut envisager de déplacer cette valeur en colonne 3
essai 4 : pas de valeurs colonnes 35 à 42 mais une valeur (36.9) colonne 60, qu'est ce qu'on en fait ?
essai 5 : même problème, 41.7 en colonne 61 et pas de valeur colonnes 27 à 34
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
6 avril 2015 à 11:09
6 avril 2015 à 11:09
Salut ccm81,
Encore une fois, désolé de te répondre aussi tardivement mais je suis vraiment débordé ^^
Alors tu as raison, je ne sais pas ce qui s'est passé, en fait j'ai enlevé certaines données et remplacer certains mots car ce sont des résultats de tests envoyés à nos clients, et en réalité, pour le test 12, c'est dans l'ordre : essai 3 / essai 1 / essai 2 et non pas essai 3 / essai 4 / essai 5 au niveau des colonnes 59 à 61.
Là, je dois aller bosser. Je vais essayer de refaire le fichier d'origine correctement histoire que l'on reparte d'une bonne base et je le posterai ce soir.
A+
D277
Encore une fois, désolé de te répondre aussi tardivement mais je suis vraiment débordé ^^
Alors tu as raison, je ne sais pas ce qui s'est passé, en fait j'ai enlevé certaines données et remplacer certains mots car ce sont des résultats de tests envoyés à nos clients, et en réalité, pour le test 12, c'est dans l'ordre : essai 3 / essai 1 / essai 2 et non pas essai 3 / essai 4 / essai 5 au niveau des colonnes 59 à 61.
Là, je dois aller bosser. Je vais essayer de refaire le fichier d'origine correctement histoire que l'on reparte d'une bonne base et je le posterai ce soir.
A+
D277
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
6 avril 2015 à 22:49
6 avril 2015 à 22:49
Et voilà !! https://www.cjoint.com/c/EDgxbMFnQPQ
Dis moi, si mon opération est faisable ou non, si ce n'est pas possible ou que cela serait trop casse tête, je ferai les "copier/coller" à la main.
Un grand merci
Bonne soirée
D277
Dis moi, si mon opération est faisable ou non, si ce n'est pas possible ou que cela serait trop casse tête, je ferai les "copier/coller" à la main.
Un grand merci
Bonne soirée
D277
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
7 avril 2015 à 14:36
7 avril 2015 à 14:36
Ce que j'ai compris
Lorsqu'il y a un "trou" dans les essais (colonnes 3 à 58) le "trou" est sur la première des 8 colonnes de cet essai, et sa valeur est (peut être) après la colonne 58, si elle y est, il faut la rapporter dans le "trou"
A tester d'abord sur la feuille Test (100 lignes)
https://www.cjoint.com/?3DhoTK8FvxP
Cdlmnt
Lorsqu'il y a un "trou" dans les essais (colonnes 3 à 58) le "trou" est sur la première des 8 colonnes de cet essai, et sa valeur est (peut être) après la colonne 58, si elle y est, il faut la rapporter dans le "trou"
A tester d'abord sur la feuille Test (100 lignes)
https://www.cjoint.com/?3DhoTK8FvxP
Cdlmnt
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
7 avril 2015 à 17:57
7 avril 2015 à 17:57
Juste incroyable ^^
Tu es un génie !! J'aimerai vraiment maîtriser la programmation aussi bien que toi :)
Ma question sera donc enfantine pour toi mais, quel est le paramètre à changer pour considérer la récupération des données au-delà de la ligne 100 ? Je dois avouer que je suis dépassé et de loin !
Et enfin le plus important, est-ce que tu peux m'indiquer comme tu l'as fait ci-dessus des explications sur la macro "Récupérations Dernière Valeurs" ?
Un énorme et monumental MERCI !
D277
Tu es un génie !! J'aimerai vraiment maîtriser la programmation aussi bien que toi :)
Ma question sera donc enfantine pour toi mais, quel est le paramètre à changer pour considérer la récupération des données au-delà de la ligne 100 ? Je dois avouer que je suis dépassé et de loin !
Et enfin le plus important, est-ce que tu peux m'indiquer comme tu l'as fait ci-dessus des explications sur la macro "Récupérations Dernière Valeurs" ?
Un énorme et monumental MERCI !
D277
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
7 avril 2015 à 18:29
7 avril 2015 à 18:29
1. Merci, mais n'exagérons rien !!!
2. Quel est le paramètre à changer pour considérer la récupération des données au-delà de la ligne 100
Rien à changer, la macro travaille sur la feuille active et va jusqu'à la dernière ligne de la colonne A
3. Avec quelques explications
4. Si c'est fini, merci de mettre le sujet à Résolu (en haut à gauche de ton premier message)
Bonne fin de journée
2. Quel est le paramètre à changer pour considérer la récupération des données au-delà de la ligne 100
Rien à changer, la macro travaille sur la feuille active et va jusqu'à la dernière ligne de la colonne A
3. Avec quelques explications
Public Sub RecuperationDernieresValeurs() Dim essai As String, coess As Long Dim li As Long, lifin As Long, co As Long, cofin As Long, cocodeb As Long Application.ScreenUpdating = False With ActiveSheet ' colonne début des valeurs après la colonne 59 = 3+7*8 cocodeb = codeb + nbtra * lgtra ' dernière ligne de la colonne A lifin = .Cells(Rows.Count, cotes).End(xlUp).Row ' boucle sur les lignes For li = lideb To lifin ' dernière colonne renseignée de la ligne li cofin = .Cells(li, Columns.Count).End(xlToLeft).Column ' si cofin >= 59 c'est qu'il y a des valeurs à récupérer If cofin >= cocodeb Then ' boucle sur les colonnes de récupération For co = cocodeb To cofin ' si la cellule(li,co) n'est pas vide, c'est une valeur à récupérer If .Cells(li, co) <> "" Then ' essai = entête de la colonne (en ligne liess) essai = .Cells(liess, co) ' coess = première colonne de essai dans la ligne li coess = .Rows(liess).Find(essai, , , xlWhole).Column ' copie de la valeur récupérée dans cette colonne .Cells(li, co).Copy .Cells(li, coess) End If Next co End If Next li End With Application.ScreenUpdating = True End Sub
4. Si c'est fini, merci de mettre le sujet à Résolu (en haut à gauche de ton premier message)
Bonne fin de journée
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
13 avril 2015 à 19:05
13 avril 2015 à 19:05
Un grand merci. Il ne me restera plus qu'à étudier ça ;)
Mais d'abord, il faut que je réfléchisse au problème suivant, au pire je posterai un autre sujet.
Mais d'abord, il faut que je réfléchisse au problème suivant, au pire je posterai un autre sujet.
D277
Messages postés
34
Date d'inscription
lundi 7 avril 2014
Statut
Membre
Dernière intervention
30 avril 2015
30 avril 2015 à 19:21
30 avril 2015 à 19:21
Petit détail, j'ai demandé une nouvelle extraction de données pour m'éviter d'avoir certaines valeurs inutiles que je n'ai pas réussi à éliminer autrement (trop dispersées sur l'étendue du fichier).
J'ai modifié les paramètres, chaque variable a été adaptée à la nouvelle forme du fichier, mais le résultat n'est pas là.
Les valeurs récupérées ne sont pas à la bonne place et les essais ne sont pas tout le temps mis les uns en-dessous des autres.
J'y réfléchis depuis des heures et j'ai repris chaque ligne de ton code avec tes explications mais je ne vois pas où est LE problème.
Alors ma question, est-ce qu'il faut adapter autre chose que les variables pour réutiliser ton code ?
Merci d'avance
D277
J'ai modifié les paramètres, chaque variable a été adaptée à la nouvelle forme du fichier, mais le résultat n'est pas là.
Les valeurs récupérées ne sont pas à la bonne place et les essais ne sont pas tout le temps mis les uns en-dessous des autres.
J'y réfléchis depuis des heures et j'ai repris chaque ligne de ton code avec tes explications mais je ne vois pas où est LE problème.
Alors ma question, est-ce qu'il faut adapter autre chose que les variables pour réutiliser ton code ?
Merci d'avance
D277
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
2 mai 2015 à 17:20
2 mai 2015 à 17:20
Bonjour
est-ce qu'il faut adapter autre chose que les variables pour réutiliser ton code ?
En principe non
Quelques précisions
1. A exécuter dans l'ordre
1.1. Lancer, si besoin, la récupération des données après la dernière colonne
1.2. Lancer la macro OK
2. Les données doivent être structurées (même nombre d'essai lgtra = 8 pour chacune des nbtra = 7 ) "tranches" d'essai
3. Si tu as adapté les constantes à ton fichier, ça devrait fonctionner
4. Les deux procédures ne doivent être exécutées qu'une fois et tu peux/dois supprimer toutes les colonnes après la colonne codeb+lgtra-1
Cdlmnt
est-ce qu'il faut adapter autre chose que les variables pour réutiliser ton code ?
En principe non
Quelques précisions
1. A exécuter dans l'ordre
1.1. Lancer, si besoin, la récupération des données après la dernière colonne
1.2. Lancer la macro OK
2. Les données doivent être structurées (même nombre d'essai lgtra = 8 pour chacune des nbtra = 7 ) "tranches" d'essai
3. Si tu as adapté les constantes à ton fichier, ça devrait fonctionner
4. Les deux procédures ne doivent être exécutées qu'une fois et tu peux/dois supprimer toutes les colonnes après la colonne codeb+lgtra-1
Cdlmnt