Je suis débutant et même plus que novice dans VBA alors excusez la naïveté de la question mais j'aurai besoin d'un script qui me supprime la valeur d'une cellule si la valeur de la même cellule (même coordonnées) dans une autre feuille est inférieure à 5. J'ai essayé le code suivant mais malheureusement il ne marche que lorsque je sélectionne une seule cellule. Auriez-vous une solution pour pouvoir le faire marcher à l'ensemble des cellules (car j'en ai 25000 !) ?
Je t'invite à indenter ton code. C'est tellement plus lisible. Et cela permet de mieux se relire. C'est un vieux truc de développeurs : http://fr.wikipedia.org/wiki/Indentation pour toi le novice
Tu as oublié de Dimensionner x et y. Ce n'est pas grave, VB est tellement permissif. Ajoute l'Option Explicit pour éviter d'oublier des "trucs" dans ton code, il en sera beaucoup plus facile à corriger en cas de bug.
ActiveCell, c'est la cellule active au moment où on appelle cette méthode, donc lignes 3 et 4. Quand tu t'en sers à nouveau, ligne 9, les valeurs de y et z ne sont pas remise à jour. C'est donc entre le For et le Next qu'il faut réinitialiser y et z, à chaque tour de boucle.
Sheets, c'est la collection de tous les onglets, c'est-à-dire aussi bien les feuilles de calcul que les graphes. Seules les feuilles de calcul t'intéressent, alors utilise plutôt la collection WorkSheets.
Comme ça, regarde : (Code à bien comprendre pour que ça te soit profitable. Si tu as des questions, n'hésite pas, même naïves )
Code :
Sub TaMacro()
Dim row As Long
Dim col As Long
Dim cel As Range
For Each cel In Selection
row = cel.Row
col = cel.Col
If WorkSheets("1 Fam" ).Cells(row, col).Value < 5 Then
cel.Value = ""
End If
Next cel
End Sub
Quand tu ne seras plus un novice, tu l'écriras comme ça :
Code :
Sub ZeroSiTropPetit(zone As Range, mini As Integer)
Dim cel As Range
For Each cel In zone
If WorkSheets("1 Fam" ).Cells(cel.Row, cel.Row).Value < mini Then
cel.Value = ""
End If
Next cel
End Sub
Sub TaMacro()
ZeroSiTropPetit Selection, 5
End Sub
Toutes ces explications pour que tu quittes rapidement l'état de novice qui ose à peine poser des questions naïves.