FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Macro à appliquer à plusieurs cellules
 

Macro à appliquer à plusieurs cellules

Il y a 392 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Macro à appliquer à plusieurs cellules
 
Plus d'informations

Bonjour à tous,  
 
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 !) ?
 
Merci par avance !
 
 

Code :
  1. Sub MaMacro()
  2. y = ActiveCell.Row
  3. z = ActiveCell.Column
  4. Dim MyCell As Range
  5. For Each MyCell In Selection
  6. If Sheets("1 Fam" ).Cells(y, z).Value < 5 Then
  7. MyCell.Value = ""
  8. End If
  9. Next MyCell
  10. End Sub


zeb
Profil : Modérateur libre
Plus d'informations

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 :
  1. Sub TaMacro()
  2.     Dim row As Long
  3.     Dim col As Long
  4.     Dim cel As Range
  5.     For Each cel In Selection
  6.         row = cel.Row
  7.         col = cel.Col       
  8.         If WorkSheets("1 Fam" ).Cells(row, col).Value < 5 Then
  9.             cel.Value = ""
  10.         End If
  11.     Next cel
  12. End Sub


 
Quand tu ne seras plus un novice, tu l'écriras comme ça :

Code :
  1. Sub ZeroSiTropPetit(zone As Range, mini As Integer)
  2.     Dim cel As Range
  3.     For Each cel In zone
  4.         If WorkSheets("1 Fam" ).Cells(cel.Row, cel.Row).Value < mini Then
  5.             cel.Value = ""
  6.         End If
  7.     Next cel
  8. End Sub
  9. Sub TaMacro()
  10.     ZeroSiTropPetit Selection, 5
  11. End Sub


 
Toutes ces explications pour que tu quittes rapidement l'état de novice qui ose à peine poser des questions naïves. :o


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Macro à appliquer à plusieurs cellules
 

Annonces Google
Publicité
Les ressources relatives