[déplacé VB.NET -> VBA] Macro sur excel 2003 qui amene directement dans une cell

gricha73 Messages postés 1 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010 - 29 janv. 2010 à 13:57
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 31 janv. 2010 à 14:11
Bonjour,

j'ai besoin d'aide dans un projet. J'ai un classeur excel dans lequel je controle les montants par difference. Si celle ci est egal à 0, alors il n'y a pas d'écart et tout va bien.
Le probleme est que le nombre données à verifier est important. Je dois donc verifier sur une grand nombre de cellule si les valeurs sont égales à 0. j'ai essayé de créer une macro (sans y parvenir vu mon niveau...) qui m'emmennerait directement sur les cellules qui ne sont pas égale à zéro.

Si qqn pouvait me proposer une ébauche, ça me rendrait une grand service!!!


merci à vous

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
29 janv. 2010 à 14:46
Bonjour,
1)
qui m'emmennerait directement sur les cellules qui ne sont pas égale à zéro.

dans cette expression : qui m'emmènerait dans ... n'est pas clair !
t'y "emmener" comment ?
veux-tu dire : qui sélectionnerait les cellules qui ne sont pas = 0 ? Si oui : dans quelle plage (range) : toutes où dans une plage (colonne) bien définie (laquelle) ?
veux-tu dire autre chose ? et quoi, exactement ?
Précision réponse valable. Pas de précision n'importe quoi !
2) tu développes sous VBA/Excel et non VB.Net ! Prends s'il te plait dorénavant soin à bien choisir le thème adéquat ... Merci.
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
29 janv. 2010 à 15:25
Allez ... (on m'attend et on me presse ailleurs)...
Regarde ce que fait ceci (exemple bâclé) :

Private Sub CommandButton1_Click()
  Dim i As Integer, a_traiter As Range, alors As String, c As Range
  '--------------- dans cet exemple, on choisit de traiter les lignes 4 à 20 de la colonne A --------------------
  For i = 4 To 20
    If Range("A" & i).Value = "0" Then
      If a_traiter Is Nothing Then Set a_traiter Range("A" & i) Else Set a_traiter Application.Union(a_traiter, Range("A" & i))
    End If
  Next
  If Not a_traiter Is Nothing Then
    For Each c In a_traiter
      c.Activate
      alors = InputBox("combien, alors ?") ' à toi d'améliorer cet inputbox à TA sauce (quand-même !)
      c.Value = alors
    Next
  End If
End Sub

Si tu te retrousses un peu les manches, ça ira tout seul ...

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
29 janv. 2010 à 17:39
Ou encore ainsi, ce qui est plus orthodoxe, moins lent et surtout qui "ne va pas lâcher" (méthode cerbère) l'utilisateur tant qu'il n'aura pas remplacé les 0 :
Private Sub CommandButton1_Click()
  Dim i As Integer, alors As String, c As Range, ou As Integer
  '--------------- dans cet exemple, on choisit de traiter les lignes 4 à 20 de la colonne A --------------------
  With Range("A4:A20")
    Set c = .Find("0", LookIn:=xlValues)
    If Not c Is Nothing Then
       ou = c.Row
       Do
         c.Activate
         alors = InputBox("combien, alors ?") ' à toi d'améliorer cet inputbox à TA sauce (quand-même !)
         c.Value = IIf(alors <> "", alors, c.Value)
         Set c = .FindNext(c)
         If Not c Is Nothing Then
           If c.Row < ou Then Exit Do
         End If
       Loop Until c Is Nothing
    End If
  End With
End Sub


Amuse-toi bien ....
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
29 janv. 2010 à 20:21
Pardon ...
Modifier (bien évidemment) laligne disant :
 Set c = .Find("0", LookIn:=xlValues)

par
Set c = .Find("0", LookIn:=xlValues, lookat:=xlWhole)


pour ne pas s'arrêter inutilement sur d'autres "0" (dans, par exemple "1203"
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
30 janv. 2010 à 16:27
hum... et pourquoi ne pas essayé une formule classique du tableur, avec =SI ???

Amicalement,
Us.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
30 janv. 2010 à 16:40
Bonjour, us_30,
Oui mais ... comment y serait-il ensuite "emmené" ?

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
31 janv. 2010 à 14:11
Ben, en se déplaçant tout simplement...

La formule à recopier à la place de du calcul de la différence devrait être plutôt :

SI ( A2-B20;"";A2-B2 )

cela permettra de mieux visualiser les différences, donc les lignes à modifier... c'est un peu manuel, mais au final surement le plus efficace... car dans tout les cas, il faudra bien intervenir sur les lignes de différences différentes de zéro, si j'ai bien compris...

Amicalement,
Us.
0