Condition Macro VBA
Bonsoir,
Je souhaite faire une condition VBA par macro sur deux colonne. "A et B"
La condition est Si la cellule précédente est supérieur à la cellule d'en dessous, alors supprimer tout les cellules de la colonne A à partir de la cellule qui est inférieur.
Appliquer la même condition sur la colonne B.
Petit exemple :
1
2
3
4
1
1 est inférieur à 4 Donc on va supprimer "1,80,90,100"
80
90
100
Voici le code VBA qui j'ai testé mais cela ne fonctionne pas car Cell n'est pas valide, vous en pensez quoi ?
Sub Delcroissance_A_B()
Dim i As Integer, DerLig As Integer, DerLig_A As Integer, DerLig_B As Integer
DerLig = Range("A" & Rows.Count).End(xlUp).Row
With Sheets("Feuil3")
For i = 1 To DerLig
'If case = Si Cellule infèrieur à la cellule précédente alors supprimer les autres valeurs dans la colonne A à partir de la cellule ou la condition est TRUE (vrai)
'sinon prochaine cellule vers le bas'
IfCase (DerLig < Cell)
.Range("Cell+DerLig_A" & Rows.Count).ClearContents
Next i
.Activate
'Pareil pour colonne B'
IfCase (DerLig < Cell)
.Range("Cell+DerLig_B" & Rows.Count).ClearContents
Next i
.Activate
End Sub
Merci d'avance,
Bonne soirée
Bonsoir,
Bé oui !
plus : "Cell+Derlig_A" (ouB) est simplement une aberration !
que derlig_A et _B sont des variables inutiles, jamais initialisées d'ailleurs,
qu'il y a 2 Activate de trop ! (au moins un si tu n'est pas sur la feuille au lancement, et qu'il faut l'afficher à l'utilisateur (mais seulement à la fin)
et si tu es déjà sur la feuille, il faut inhiber la mise à jour de l'affichage.
Range sans point devant !
j'en oublie peut-être...
Et code non indenté, ce que vraiment je n'apprécie pas, pas du tout !
Bonjour
Tu devrais donner ton exemple sur la feuille de calcul, en montrant ce que tu attends...
Bye !
Re,
Sub Delcroissance_A_B()
Dim i As Integer, k As Integer, DerLig As Integer
Application.ScreenUpdating = False
With Sheets("Feuil3")
DerLig = .Columns("A:B").SpecialCells(xlCellTypeLastCell).Row
For k = 1 To 2
i = 3
Do
If .Cells(i, k) < .Cells(i - 1, k) Then Exit Do
i = i + 1
Loop While i <= DerLig
If i <= DerLig Then .Range(.Cells(i, k), .Cells(DerLig, k)).ClearContents
Next k
End With
End Sub
Edit : J'avais pas regardé ton classeur (de peur de ce que je pouvais y découvrir... !
Réserve autant que possible les modules des feuilles pour les macros évènementielles de la feuille ou des ActiveX de la feuille s'il y en a, et à la rigueur des proc. auxiliaires des évènements, et place les macros ordinaires ou standard (comme celle-ci) dans un module Standard !
Tu n'auras qu'à t'en féliciter à terme...
Cordialement.
Bonsoir,
Merci pour vos conseils, je vais esseyer de m'améliorer malgrès mes erreurs, étant débutant je m'y attendait à toute les fautes.
Je vais étudier votre macro pour comprendre et pouvoir améliorer ma connaissance des macros.
Sur ce, merci beaucoup et j'espère que tu as bien rigolé.
Cordialement,
Dettox
Bonjour,
Il m'arrive de rigoler !
D'une façon générale, si je donne des explications, même s'il s'agit d'éléments simples, c'est que je pense qu'elles sont nécessaires à un débutant, et je ne rigole pas des erreurs commises, cela me fait tout au plus sourire quand il s'agit d'erreurs évidentes mais que tout le monde a eu l'occasion de faire à un moment ou un autre...
Si je rigole, c'est qu'il s'agit d'une bévue tellement élémentaire qu'elle n'est même pas classable parmi les erreurs VBA. Là je n'ai pas d'explication à donner, tu peux résoudre toi-même, sans outil particulier, un peu de logique ou du simple bon sens... Mais rassure-toi, les bévues de ce type restent toujours à la portée de tous, même quand on est chevronné... !
Bonne journée.