Boucle VBA

Bonjour à tous

Je n'y connais que peux de chose en VBA c'est pourquoi je solicite votre aide et je vous remercie par avance

Je cherche une macro qui réaliserais ceux-ci:

j'ai un tableau ONGELT FEUILLE 1 ET ONGLET EN FEUILLE 2 en collonne D avec des valeurs et celle ci sont d'un nombre variable c'est a dire que des veleurs peuvent etre remplie de D3 à D60000 comme une autre fois de D3 à D75000

Voici ce que je recherche un peu comme une fonction si

EN FEUILLE 1

si une valeur en D3 est superieur a 0 alors F3=1

si une valeur en D4 est superieur a 0 alors F4=1

et ainsi de suite jusqu'au bas du tableau.

EN FEUILLE 2

si une valeur en D3 est superieur a 0 alors H3=2

si une valeur en D4 est superieur a 0 alors H4=2

et ainsi de suite jusqu'au bas du tableau.

Y a t-il une personne qui peux m aider? merci a tous

Bonjour,

Ton problème n'étant pas très clair, tu gagnerais à poster un fichier exemple...

"si une valeur en D3 est superieur a 0 alors F3=1" --> Il n'y a qu'une valeur en D3, non ?

De ce que j'ai compris, c'est effectivement une bête fonction SI :

=SI(D3>0;1;"") (En feuille 1)

=SI(D3>0;2;"") (En feuille 2)

Justement pour eviter la fonction SI que je recherche une macro cela m'eviterais de tirer la formule a chaque fois

Bonjour,

Dans ce cas ton tableau devrait être sous forme de tableau, tu sélectionne la plage et insertion tableau !

Si tu double cliques sur le carré noir en bas à droite de la cellule active, la formule s'étend toute seule jusqu'à la fin de ton tableau. Mieux, si tu utilises un tableau structuré, la formule est reportée automatiquement.

Dans tous les cas, ce sera plus simple qu'en macro...

Bonjour

Et merci néanmois je cherche vraiment un code VBA , sinon je n'aurais pas demandé ici , la fonction si ou les autres solution proposé je les connait deja

Bonjour

Et merci néanmois je cherche vraiment un code VBA , sinon je n'aurais pas demandé ici , la fonction si ou les autres solution proposé je les connait deja

En faisant abstraction de l'absurdité de ta réponse, voilà un code VBA pour faire ce que tu souhaites :

Sub TestValeurD()

Dim MaxLig As Long, Lig As Long, NF As Byte

For NF = 1 To 2 'Parcourt les feuilles
   With Sheets(NF) 'Tout objet commençant par "." se rattache à la feuille N° NF
      MaxLig = .Range("D" & .Rows.Count).End(xlUp).Row 'Identifie la dernière ligne avec données
      For Lig = 3 To MaxLig 'Parcourt les lignes à partir de la 3ème
         If .Cells(Lig, 4).Value > 0 Then .Cells(Lig, 4 + 2*NF).Value = NF 'Comparaison de la valeur en D 
      Next Lig
   End With
Next NF

End Sub

Salut Jeremy,

Salut Pedro,

la même chose avec un tableau...

Code à coller dans le module 'ThisWorkbook'. La macro démarre donc sur un double-clic, n'importe où dans une feuille ou l'autre.

Le nom des feuilles réelles doit évidemment se reporter dans le code si ils sont différents.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
'
Dim tData
'
Cancel = True
tData = Range("D3:H" & Range("D" & Rows.Count).End(xlUp).Row).Value
For x = 1 To UBound(tData, 1)
    tData(x, IIf(Sh.Name = "Feuil1", 3, 5)) = IIf(tData(x, 1) > 0, IIf(Sh.Name = "Feuil1", 1, 2), 0)
Next
Range("D3").Resize(UBound(tData, 1), 5) = tData
'
End Sub

A+

Merci a tous c est parfait

Rechercher des sujets similaires à "boucle vba"