Sélection sous conditions, puis copier coller
Résolu
jodA
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis très novice dans le VBA et j'aurai besoin de vos talents, j'explique mon cas.
Je récupère des données d'un logiciel de supervision sous cette forme :
Feed1
12
45
0
90
Feed2
43
0
0
91
Cat1
67
23
5
0
Cat2
100
56
0
2
(En réalité il y'a beaucoup plus de valeurs)
En cherchant une paire d'heure sur le net j'ai déjà programmé un petit module pour me supprimer les lignes contenant des 0.
Maintenant je suis bloqué, je désire faire ceci:
1) Sélectionner de Feed1 jusqu'à la dernière cellule avant Feed2, le copier et le coller sur une autre feuille du même classeur.
2) Sélectionner de Feed2 jusqu'a la dernière cellule avant Cat1, le copier et le coller sur une autre feuille du même classeur.
3) Sélectionner de Cat1 jusqu'à la dernière cellule avant Cat2, le copier et le coller sur une autre feuille du même classeur.
4) Et finalement sélectionner de Cat2 jusqu'à la dernière cellule contenant une valeur, le copier et le coller sur une autre feuille du même classeur.
Petite précision, Feed1, Feed2, Cat1 et Cat2 sont invariables.
Je pense pas que ce soit réellement difficile, mais comme je n'ai aucunes connaissances dans le VBA, bah j'arrive à rien !
Merci d'avance de votre aide!
je suis très novice dans le VBA et j'aurai besoin de vos talents, j'explique mon cas.
Je récupère des données d'un logiciel de supervision sous cette forme :
Feed1
12
45
0
90
Feed2
43
0
0
91
Cat1
67
23
5
0
Cat2
100
56
0
2
(En réalité il y'a beaucoup plus de valeurs)
En cherchant une paire d'heure sur le net j'ai déjà programmé un petit module pour me supprimer les lignes contenant des 0.
Maintenant je suis bloqué, je désire faire ceci:
1) Sélectionner de Feed1 jusqu'à la dernière cellule avant Feed2, le copier et le coller sur une autre feuille du même classeur.
2) Sélectionner de Feed2 jusqu'a la dernière cellule avant Cat1, le copier et le coller sur une autre feuille du même classeur.
3) Sélectionner de Cat1 jusqu'à la dernière cellule avant Cat2, le copier et le coller sur une autre feuille du même classeur.
4) Et finalement sélectionner de Cat2 jusqu'à la dernière cellule contenant une valeur, le copier et le coller sur une autre feuille du même classeur.
Petite précision, Feed1, Feed2, Cat1 et Cat2 sont invariables.
Je pense pas que ce soit réellement difficile, mais comme je n'ai aucunes connaissances dans le VBA, bah j'arrive à rien !
Merci d'avance de votre aide!
A voir également:
- Sélection sous conditions, puis copier coller
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
- Arobase copier coller - Forum Windows 10
13 réponses
re
1. je n'ai recopié que les valeurs différentes de 0
2. Attention le zéro est une chaine de caractère dans tes feuilles
3. s'il faut remettre 1 zéro tu dis
4. tout ça est à vérifier bien sur
5. tu modifies éventuellement les valeurs des constantes
6. dans ton classeur d'origine les données sont mal ventilées (pas dans les bonnes colonnes)
https://www.cjoint.com/?0IAnNZJb7RF
bonne suite
1. je n'ai recopié que les valeurs différentes de 0
2. Attention le zéro est une chaine de caractère dans tes feuilles
3. s'il faut remettre 1 zéro tu dis
4. tout ça est à vérifier bien sur
5. tu modifies éventuellement les valeurs des constantes
6. dans ton classeur d'origine les données sont mal ventilées (pas dans les bonnes colonnes)
https://www.cjoint.com/?0IAnNZJb7RF
bonne suite
bonjour
Q1. est ce que la colonne ne contient qu'une seule fois chacune des valeurs Feed1, Feed2, Cat1, Cat2?
Q2. y a t'il dans cette colonnes des Feed3, Feed4, etc.. et Cat3, Cat4, etc ..
A+
Q1. est ce que la colonne ne contient qu'une seule fois chacune des valeurs Feed1, Feed2, Cat1, Cat2?
Q2. y a t'il dans cette colonnes des Feed3, Feed4, etc.. et Cat3, Cat4, etc ..
A+
Bonjour,
Q1: Tout à fait, la colonne ne contient qu'une seule fois les valeurs Feed1, Feed2, Cat1 et Cat2.
Q2: Non il n'y pas de Feed ou Cat supérieur à 2.
Les données se présentes exactement comme dans la question.
A+
Q1: Tout à fait, la colonne ne contient qu'une seule fois les valeurs Feed1, Feed2, Cat1 et Cat2.
Q2: Non il n'y pas de Feed ou Cat supérieur à 2.
Les données se présentes exactement comme dans la question.
A+
re
une dernière question
est il indispensable de supprimer les 0 dans la feuille de données avant la ventilation des données dans les 4 autres feuilles (étant entendu que seules les valeurs non nulles seront prises en compte lors de la recopie) ?
a+
une dernière question
est il indispensable de supprimer les 0 dans la feuille de données avant la ventilation des données dans les 4 autres feuilles (étant entendu que seules les valeurs non nulles seront prises en compte lors de la recopie) ?
a+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re
une proposition
https://www.cjoint.com/?0IAkGiuME7a
je n'ai pas supprimé les lignes 0 avant la ventilation des données
bonne suite
une proposition
https://www.cjoint.com/?0IAkGiuME7a
je n'ai pas supprimé les lignes 0 avant la ventilation des données
bonne suite
Merci pour ta réponse et ton travail ! Mais je pense que je me suis mal exprimé.
Je n'ai pas besoin de créer les pages Feed et Cat. Je possède un classeur avec 2 feuilles, 1 feuille de mise en page, et 1 feuille pour les calculs.
Je t'envoi le classeur avec lequel je travaille habituellement, je pense que ce sera plus facile, j'ai tout expliqué dans la feuille DONNEES BRUTES.
http://cjoint.com/?AIAk3E4KeoQ
(Super le service cjoint, je connaissais pas)
Et merci encore pour ton aide !
Je n'ai pas besoin de créer les pages Feed et Cat. Je possède un classeur avec 2 feuilles, 1 feuille de mise en page, et 1 feuille pour les calculs.
Je t'envoi le classeur avec lequel je travaille habituellement, je pense que ce sera plus facile, j'ai tout expliqué dans la feuille DONNEES BRUTES.
http://cjoint.com/?AIAk3E4KeoQ
(Super le service cjoint, je connaissais pas)
Et merci encore pour ton aide !
Bonjour,
je reviens sur le sujet parce que j'ai un problème de compatibilité. Il tourne très bien sur Excel 2011 sur Mac, mais je dois l'utiliser sur Excel 2007 sur windows et certaines choses ne fonctionnent plus...
Dans le 2ième while, la condition IsNumeric n'a pas l'air de fonctionner, je suis en boucle infini, c'est à dire qu'il me copie toutes les valeurs numérique (même les 0). Il ne revient plus au premier while et donc la condition ligFO < ligfinFO n'est plus vérifié. Je reçois une erreur '1004', 'erreur dans la méthode Range de l'objet _Global'.
je reviens sur le sujet parce que j'ai un problème de compatibilité. Il tourne très bien sur Excel 2011 sur Mac, mais je dois l'utiliser sur Excel 2007 sur windows et certaines choses ne fonctionnent plus...
Dans le 2ième while, la condition IsNumeric n'a pas l'air de fonctionner, je suis en boucle infini, c'est à dire qu'il me copie toutes les valeurs numérique (même les 0). Il ne revient plus au premier while et donc la condition ligFO < ligfinFO n'est plus vérifié. Je reçois une erreur '1004', 'erreur dans la méthode Range de l'objet _Global'.
bonjour
RQ. modifier (pour eviter la boucle infinie)
tu peux tester dans ta feuiile en tentant une opération = C2+1
si oui une solution : encader l'intéreiur du while IsNumeric avec un test
et alors on n'a plus besoin du test qui suit donc supprimer les deux lignes
Q2. ta version d'excel est elle en français
bonne suite
RQ. modifier (pour eviter la boucle infinie)
While IsNumeric(Range(colFO & ligFO)) and ligFO < LigFinFO
Q1. est ce que ça ne viendrait pas de tes "0.0000000000000000" qui seraient vus comme des nombres (0) et non comme des chaines de caractères ?
tu peux tester dans ta feuiile en tentant une opération = C2+1
si oui une solution : encader l'intéreiur du while IsNumeric avec un test
if Range(colFO & ligFO) <> 0 then .. end if
et alors on n'a plus besoin du test qui suit donc supprimer les deux lignes
If Sheets(nomFO).Range(colFO & ligFO) <> zero Thenet
end if
Q2. ta version d'excel est elle en français
bonne suite
L'excel que j'utilise est en espagnol, cela peut avoir une incidence ?
J'ai testé ce que tu m'as proposé et la solution finale a été celle la:
While ligFO < ligfinFO
ligFO = ligFO + 1
While IsNumeric(Range(colFO & ligFO)) And ligFO < ligfinFO
If Range(colFO & ligFO) > zero then
ligFC = Sheets(nomFC).Range(colFC & 65536).End(xlUp).Row + 1
Sheets(nomFC).Range(colFC & ligFC).Value = Range(colFO & ligFO)
End If
ligFO = ligFO + 1
Wend
nomFCC = Sheets(nomFO).Range(colFO & ligFO)
Select Case nomFCC
Case nomF1: colFC = colF1
Case nomF2: colFC = colF2
Case nomC1: colFC = colC1
Case nomC2: colFC = colC2
End Select
Wend
Le <> 0 ne fonctionnait pas, alors j'ai mis > à zero.
Merci encore pour le suivit !
J'ai testé ce que tu m'as proposé et la solution finale a été celle la:
While ligFO < ligfinFO
ligFO = ligFO + 1
While IsNumeric(Range(colFO & ligFO)) And ligFO < ligfinFO
If Range(colFO & ligFO) > zero then
ligFC = Sheets(nomFC).Range(colFC & 65536).End(xlUp).Row + 1
Sheets(nomFC).Range(colFC & ligFC).Value = Range(colFO & ligFO)
End If
ligFO = ligFO + 1
Wend
nomFCC = Sheets(nomFO).Range(colFO & ligFO)
Select Case nomFCC
Case nomF1: colFC = colF1
Case nomF2: colFC = colF2
Case nomC1: colFC = colC1
Case nomC2: colFC = colC2
End Select
Wend
Le <> 0 ne fonctionnait pas, alors j'ai mis > à zero.
Merci encore pour le suivit !
bon,
quelques questions toutefois
1. la version d'excel peut influencer le codage des nombres ( . eu lieu de ,)
2. est ce que les 0.000 de la feuilles sont bien tous identiques, ça expliquerait le > au lieu de <> ?
3. as tu testé sur la feuille une opération du genre = C2+1 où C2 contient le fameux 0.0000
bonne journée
quelques questions toutefois
1. la version d'excel peut influencer le codage des nombres ( . eu lieu de ,)
2. est ce que les 0.000 de la feuilles sont bien tous identiques, ça expliquerait le > au lieu de <> ?
3. as tu testé sur la feuille une opération du genre = C2+1 où C2 contient le fameux 0.0000
bonne journée