VBA - fonction Find avec un What: non pas = mais <> d'un montant

domduf33

XLDnaute Nouveau
Bonjour à toutes et à tous.


J'essaye de faire une macro qui "m'affiche" dans une plage de données A1:A50000 les cellules qui sont différentes de zéro.
Voici la macro.

Sub AtteindreCelluleDifZero()
' Active ma plage de selection
Dim PlageTravail As Range
Range("a1", "a50000").Select
Dim Recherche As Double
Recherche = 1254
Set PlageTravail = Selection

' Trouve la valeur et la sélectionne
PlageTravail.Find(What:=Recherche, _
After:=PlageTravail.Range("A1"), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False _
).Select
End Sub

Ce qui cloche c'est que je n'arrive pas à dire que ma variable Recherche doit être différente de zéro.
Là, j'ai dit qu'elle était égale à 1254 pour voir si le reste de ma macro fonctionnait, ce qui est le cas, mais je ne sais pas comment lui dire que ma variable Recherche doit être différente de zéro.

Une suggestion ?
Par avance merci
Dominique
 

Cousinhub

XLDnaute Barbatruc
Re : VBA - fonction Find avec un What: non pas = mais <> d'un montant

Bonsoir,

Juste pour essai....

Comme tu le sais, l'enregistreur de macro est un de tes plus grands amis..

Donc, tu le démarres....

Appuie sur "F5", soit "Édition/Atteindre"

Puis sur "Cellules", en bas...

Clique sur "Cellules vides"

Tu as donc accès à toutes tes cellules vides....

Ça devrait te donner un code du style :

Code:
Columns("A:A").SpecialCells(xlCellTypeBlanks).Select

Que du bonheur....

@ te relire
 

domduf33

XLDnaute Nouveau
Re : VBA - fonction Find avec un What: non pas = mais <> d'un montant

Bonjour bhbh.


Merci pour ta réponse rapide.
Oh que oui, que c'est l'un de mes plus grand ami...
Il m'a déjà permit d'automatiser pas mal de choses mais, dans ce cas là, il ne me sert à rien où alors y'a encore quelque chose qui m'échappe....
En fait, je ne cherche pas à "afficher" mes cellules vides mais les cellules dont le contenu est différent du chiffre zéro.

j'ai deux colonnes C et D.
Chacune de ces colonnes à plusieurs milliers de lignes.
En colonne A, je compare les montants de la colonne C et D. Si les montants sont identiques alors je met 0 dans la colonne A, sinon je met la différence qu'il y a entre C et D. Je dois obligatoirement mettre zéro dans le champ car il sert à d'autres retraitements sur d'autres feuilles.

Ma macro, qui sera incluse dans un ensemble plus important de macro, doit permettre à un opérateur quelconque, en cliquant sur un bouton, d'aller directement à la 1er cellule de la colonne A dont le montant est différent de zéro afin d'effectuer les modifications nécessaires dans les autres colonnes...

J'avais essayé effectivement l'enregistreur de macro pour faire un filtre automatique sur le champ avec comme valeur de critère <> de zéro. J'ai bien eu un code mais je ne vois pas comment je peux l'inclure avec la fonction FIND.
L'objet autofiltrer à une fonction critère qu'apparemment n'a pas la fonction FIND.

Je sèche....ce qui est un comble avec toute la pluie qui tombe en ce moment

Quel temps fait-il à Nouméa ?

Cordialement
Dominique
 

Staple1600

XLDnaute Barbatruc
Re : VBA - fonction Find avec un What: non pas = mais <> d'un montant

Bonjour domduf33


Pourquoi pas le filtre automatique ?
La formule en colonne A (à partir de A2 ): =(C2=D2)
Et le critère du filtre : FAUX
aaa.gif
 

Pièces jointes

  • aaa.gif
    aaa.gif
    2.4 KB · Affichages: 125
  • aaa.gif
    aaa.gif
    2.4 KB · Affichages: 114
Dernière édition:

domduf33

XLDnaute Nouveau
Re : VBA - fonction Find avec un What: non pas = mais <> d'un montant

Bonsoir Staple 1600

Merci pour ta réponse.
Je ne peux pas passer par un filtre car toutes les cellules doivent être apparentes (celles à zéro et celles différentes de zéro )et c'est seulement en cliquant sur un bouton que j'aurais crée et qui sera relié à la macro que, je sais pas comment dire, que le "curseur", selectionnera directement la 1ere cellule de ma colonne A dont le contenu est différente de zéro.

Pour le moment ta solution vient de me donner l'idée qu'en fait, je peux très bien insérer une autre colonne avec cette fois un critère qui effectivement, comme tu le suggères, renvois une donnée de type Vrai ou faux et de là, dans ma macro dire que What:="FAUX" ce qui donne ceci.

Sub Macro1()
'
'Sub AtteindreCelluleDifZero()
' Active ma plage de selection
Dim PlageTravail As Range
Range("a1", "a50000").Select
Dim Recherche As Double
Set PlageTravail = Selection

' Trouve la valeur et la sélectionne
PlageTravail.Find(What:="FAUX", _
After:=PlageTravail.Range("A1"), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False _
).Select
End Sub

C'est pas la panacée mais cela fonctionne. En attadant, je vais utiliser cette solution.
Merci encore pour ta suggestion.

Je reste ouvert à toutes autres suggestions qui permettraient, dans l'idéal, de me passer de cette autre colonne.

Merci à tous.
Cordialement
Dominique
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 494
Membres
103 234
dernier inscrit
matteo75654548