Code VBA selection conditionnelle

Fermé
QuentDB Messages postés 6 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 23 août 2016 - 30 juin 2016 à 14:00
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 30 juin 2016 à 18:49
Bonjour,

Je souhaite créer une macro qui permettrait de faire une sélection dans un fichier excel de toutes les lignes (de la colonne A à Q) dont la colonne A est différente de "0".

Je suis novice sur VBA et je n'ai aucune idée de la manière de procéder.

Quelqu'un pourrait-il m'aider ?

Merci d'avance
A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
30 juin 2016 à 15:12
bonjour

quand tu parles sélection: suppression des zéros ou masquage ?
et où restituer ?

tu peux le faire sans VBA

tu sélectionnes ton tableau (lignes et colonnes)
filtrer
clique sur la petite flèche dans la colonne A
décoche le Zéro

tu peusx aussi le faire avec l'enregistreur de macro
0
QuentDB Messages postés 6 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 23 août 2016
30 juin 2016 à 16:30
Bonjour michel_m,

Tout d'abord merci pour ta réponse.

En fait, j'ai besoin de sélectionner toutes les lignes (et colonne de A à Q) dont la colonne A est différente de 0 pour copier cette sélection dans un autre classeur qui traitera ces données.

Effectivement je peux utiliser les filtres mais j'ai des dizaines de milliers de lignes donc cela reste long pour la sélection ensuite. Et cette macro à pour but de gagner du temps dans le traitement.

Et l'enregistreur de macro va mémoriser une ligne particulière comme étant la dernière qui ne correspondra pas avec ma prochaine importation.

Toutefois, qqun m'a renseigné et j'arrive à mon but avec ce code :

Sub SélectionnerNonVide()

Dim vide As Boolean
Dim i As Integer
i = 2
vide = False

While vide = False
If (Cells(i, 1) = 0) Then
vide = True
End If
i = i + 1
Wend

i = i - 2

Range("A" & 2 & ":P" & i).Select

End Sub

Si cela peut aider pour qqun d'autre à l'avenir.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
30 juin 2016 à 17:33
Avec des dizaines de milliers de ligne, la solution cellules par cellules que tu décris est particulièrement chronophage et il faut raisonner par des "variables-tableaux" qui devraient réduire le temps en secondes
question: as tu + de 65536 lignes ?

Mettre un extrait du  classeur(environ 2000 à 3000lignes) sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci par un clic droit sur le lien proposé dans le message de réponse


je m'y mets demain matin si j'ai ce classeur
0
QuentDB Messages postés 6 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 23 août 2016
30 juin 2016 à 17:47
Merci beaucoup pour ton aide michel_m mais j'arrive a mes fins avec ce code. Je vais donc m'en contenter.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306 > QuentDB Messages postés 6 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 23 août 2016
30 juin 2016 à 18:49
J'en prend acte mais c'est un très mauvais code qu'on t'a communiqué: il y a beaucoup de chose qu'il faut pas faire même si ca marche.
0