Boucle do loop problème d'incrémentation?
camanagro
-
camanagro -
camanagro -
Bonjour,
Je suis débutante et je suis en train de créer une macro qui parcourt un tableur et fait une comparaison de 2 dates d'application pour des valeur de cellule adjacente (MA) identique. Si la différence entre ces 2 dates est inférieur à 15 alors j'ai une MsgBox qui me le dit et me donne des cellules adjacentes.
Mon problème est tout d'abord dans le fait que la message box s'affiche (sans les données) meme si la différence entre mes 2 dates est supérieur à 15, en ensuite dans le fait que la comparaison s'arrete à la première occurence (ne va pas jusqu'au bout du tableau)
ça fait un moment que je galère dessus donc si vous avez une proposition rapide, je suis preneuse!
Merci beaucoup!!
a = a + 2
Else
a = a + 1
End If
Loop Until ActiveCell.Offset(a + 1, 0).Value = " "</code>
Je suis débutante et je suis en train de créer une macro qui parcourt un tableur et fait une comparaison de 2 dates d'application pour des valeur de cellule adjacente (MA) identique. Si la différence entre ces 2 dates est inférieur à 15 alors j'ai une MsgBox qui me le dit et me donne des cellules adjacentes.
Mon problème est tout d'abord dans le fait que la message box s'affiche (sans les données) meme si la différence entre mes 2 dates est supérieur à 15, en ensuite dans le fait que la comparaison s'arrete à la première occurence (ne va pas jusqu'au bout du tableau)
ça fait un moment que je galère dessus donc si vous avez une proposition rapide, je suis preneuse!
Merci beaucoup!!
Sub nvleselection()
'travaille sur cette nouvelle selection*
Workbooks("BDD_MA.xlsm").Sheets("travailMA").Activate
Dim a As Integer
a = 0
Range("Y2").Select
Do
If ActiveCell.Offset(a, 0) = ActiveCell.Offset(a + 1, 0) Then
If ActiveCell.Offset(a, -2) - ActiveCell.Offset(a + 1, -2) < 15 And ActiveCell.Offset(a, -2) - ActiveCell.Offset(a + 1, -2) > -15 Then
MsgBox "La MA " & ActiveCell.Offset(a, 0) & " est appliquée 2 fois sur une période de moins de 15 jours. Produits utilisés: " & ActiveCell.Offset(a, -5) & " et " & ActiveCell.Offset(a + 1, -5) & "."
End <code>If
a = a + 2
Else
a = a + 1
End If
Loop Until ActiveCell.Offset(a + 1, 0).Value = " "</code>
A voir également:
- Boucle do loop problème d'incrémentation?
- My people do - Télécharger - Organisation
- Bash do while ✓ - Forum Shell
- Do not turn off target traduction - Forum Samsung
- Samsung galaxy tab S Bloquer Downloading do not turn off target - Forum Téléphones & tablettes Android
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
2 réponses
bonjour
RQ1. Il y a un espace entre les guillemets ici qui me semble de trop (je suppose que tu as voulu mettre ="vide")
Loop Until ActiveCell.Offset(a + 1, 0).Value = " "
RQ2. On peut simplifier un peu ton code
1. utilisation de With ActiveCell .... End With
2. (x-y>-15) et (x-y<15) équivaut à |x-y|<15
RQ3. il y a peut être d'autres coquilles
fais un suivi des variables en exécutant pas à pas ta procédure, il te suffit de
1. mettre u point d'arrêt devant la ligne a=0 (clic dans la marge un gros point doit apparaitre)
2. exécuter la procédure (F8 pour passer à l'instruction suivante)
3. cliquer sur une variable pour voir son état
bonne journée
RQ1. Il y a un espace entre les guillemets ici qui me semble de trop (je suppose que tu as voulu mettre ="vide")
Loop Until ActiveCell.Offset(a + 1, 0).Value = " "
RQ2. On peut simplifier un peu ton code
1. utilisation de With ActiveCell .... End With
2. (x-y>-15) et (x-y<15) équivaut à |x-y|<15
Sub nvleselection()
Dim a As Integer
'travaille sur cette nouvelle selection*
Workbooks("BDD_MA.xlsm").Sheets("travailMA").Activate
a = 0
Range("Y2").Select
With ActiveCell
Do
If .Offset(a, 0) = .Offset(a + 1, 0) Then
If Abs(.Offset(a, -2) - .Offset(a + 1, -2) < 15) Then
MsgBox "La MA " & .Offset(a, 0) & " est appliquée 2 fois sur une période de moins de 15 jours. Produits utilisés: " & .Offset(a, -5) & " et " & .Offset(a + 1, -5) & ".", vbOKOnly
End If
a = a + 2
Else
a = a + 1
End If
Loop Until .Offset(a + 1, 0).Value = ""
End With
End Sub
RQ3. il y a peut être d'autres coquilles
fais un suivi des variables en exécutant pas à pas ta procédure, il te suffit de
1. mettre u point d'arrêt devant la ligne a=0 (clic dans la marge un gros point doit apparaitre)
2. exécuter la procédure (F8 pour passer à l'instruction suivante)
3. cliquer sur une variable pour voir son état
bonne journée