Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Amélioration macro

  • Initiateur de la discussion Initiateur de la discussion NYghost
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

NYghost

Guest
Salut la communauté,

Meilleurs voeux pour 2010..

Alors voila, je chipote toujours de manière très basique avec les macros et j'aimerai améliorer 2-3 trucs dans une macro que j'ai créé mais la je bloque!

Tout d'abord, voici le code en question:

Code:
Sub test()

Dim varcheck As String
Dim varbat As String
Dim varboil As String
Dim varfreq As String

For Each Cellule In Range("A1:M1000")

On Error Resume Next

varcheck = "check"
varbat = "battery"
varboil = "boil"
varfreq = "frequency"
varaccess = "access"
varvers = "version"

Set wordcheck = Cells.Find(What:=varcheck)
    If Not wordcheck Is Nothing Then
    wordcheck.Select
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
End If

Set wordbat = Cells.Find(What:=varbat)
    If Not wordbat Is Nothing Then
    wordbat.Select
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
End If

Set wordboil = Cells.Find(What:=varboil)
    If Not wordboil Is Nothing Then
    wordboil.Select
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
End If

Set wordfreq = Cells.Find(What:=varfreq)
    If Not wordfreq Is Nothing Then
    wordfreq.Select
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
End If

Set wordaccess = Cells.Find(What:=varaccess)
    If Not wordaccess Is Nothing Then
    wordaccess.Select
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
End If

Set wordvers = Cells.Find(What:=varvers)
    If Not wordvers Is Nothing Then
    wordvers.Select
    ActiveCell.EntireRow.Select
    Selection.Delete Shift:=xlUp
End If

Next

End Sub

3 choses sont à améliorer:
- Mon range actuel (A1:M1000) est statique, or, parfois j'ai un tableau de 500 lignes à traiter, parfois il s'agit d'un tableau de 5000 lignes, je dois donc modifier manuellement. Est-il possible de dimensionner ce range dynamiquement en fonction de l'occupation des cellules?
- Assez proche du but précédent, j'aimerai simplement numéroter les lignes remplies dans la colonne N
- Enfin pour le dernier, une explication s'impose: comme vu pouvez le voir, je cherche une série de mot afin d'effacer les lignes. Je pense qu'il serait mieux de chercher le seul et unique mot que je veux garder, a savoir "level" et supprimer le reste, est-ce possible?

Un grand merci d'avance à tous pour votre aide..

NYghost
 
Re : Amélioration macro

Bonjour,

pour ta 1ère question, essaye ainsi, en supposant que l'on puisse se baser sur la colonne A pour déterminer le nombre de lignes à traiter... :

Code:
For Each Cellule In Range("A1:M" & Range("A65536").End(xlUp).Row)

bon après midi
@+
 
Re : Amélioration macro

Re

A noter que si tu supprimes des lignes, il est préférable de commencer par la fin et de remonter...

Code:
Dim i As Long
For i = Range("A65536").End(xlUp).Row To 1 Step -1
'ton code
Next i

@+
 
Re : Amélioration macro

Re

pour ta 2ème question, regarde du coté de la propriété "offset" dans l'aide vba, devrait pouvoir y répondre....

d'autre part, pas sur que tu ais vu mon post de 16h03...

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
411
Réponses
7
Affichages
449
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…