Sélection sous conditions, puis copier coller

[Résolu/Fermé]
Signaler
-
Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
-
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!

13 réponses

Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
2 195
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
2 195
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+
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+
Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
2 195
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+
Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
2 195
re

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 suis impressionné, c'est parfait !

Je te remercie beaucoup et bonne continuation à toi aussi !
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'.
Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
2 195
bonjour

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 Then
et
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 !
Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
2 195
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
Les 0 sont tous identiques oui, j'ai essayé aussi l'opération =C2+1 et j'obtiens 00001.

Bonne journée
Messages postés
10087
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
7 septembre 2021
2 195
re

donc tes 0 sont des nombres ce qui explique l'echec du non-IsNumeric sur ce nombre

bonne journée