Bonjour modifier une macro

bonjour à tous est ce que quelqu'un peu m'aider à modifier la macro il y a un problème je voudrais pouvoir mettre le caractère * n'importe où dans ma combinaison recherché afin qu'il remplace n'importe quel chiffre à la position où il est placé.

lorsque je le place au début cela fonctionne quand je le pace ailleurs cela ne fonctionne plus

merci à tous pour votre aide.

27classeur-3.xlsm (19.15 Ko)

Bonjour,

une piste pour modifier votre code :

votre première recherche est : 3 * 9 11 * 19 *

ensuite vous supprimez les "*" par, votre recherche devient : 3 9 11 19

ensuite vous faites une comparaison des combinaisons avec cette recherche modifiée, en fait il n'y en a pas !!!

en effet il y a bien la cellule A2 = 3 9 11 13 14 18 19 20

mais hélas "3 9 11 13 14 18 19 20 " n'est pas égal à "3 9 11 19"

C'est bien votre code qu'il faut modifier, VBA ne fait que faire ce que vous demandez....

Quant à la G5 = * 9 12 13 14 18 19 20 , elle n'est pas trouvée non plus...

@ bientôt

LouReeD

Bonjour,

une proposition de correction.

Sub Selectionner()
    Dim i, c
    i = 1
    While Cells(i, "G") <> ""
        For Each c In Range("A1:B5")
            If c Like Cells(i, "G") Then c.Interior.ColorIndex = i + 1: Cells(i, "G").Interior.ColorIndex = i + 1
        Next c
        i = i + 1
    Wend
End Sub

merci pour la proposition de correction mais ce n'ai pas exactement ce que je veux.

- je voudrais que les cellules de A1 a B5 soit sélectionné si elles correspondes aux formules rentré dans le tableau de recherche

mais je veux pas sélectionner les cellules en couleurs qui se situ dans intervalle A1 a B5.

merci

Petite modification du code :

    Dim i, c
    Dim plage
    i = 1
    plage = ""
    While Cells(i, "G") <> ""
        For Each c In Range("A1:B5")
            If c Like Cells(i, "G") Then
                plage = plage & c.Address & ","
            End If
        Next c
        i = i + 1
    Wend
    plage = Left(plage, Len(plage) - 1)
    Range(plage).Select

Cela sélectionne les cellules qui répondent aux critères de recherche.

Est-ce cela que vous désirez ?

@ bientôt

LouReeD

merci cela fonctionne bien j'ai rajouté une petite modif à votre macro affin de ne pas sectionner les cellules colorées.

j'ai joint le fichier si cela peu aider quelqu'un d'autre.

je tente un transfert vers mon fichier final est si cela fonctionne correctement

je marquerais que le problème est résolu.

16classeur-3.xlsm (17.03 Ko)
Sub Selectionner()
Dim i, c
    Dim plage
    i = 1
    plage = ""
    While Cells(i, "AI") <> ""
        For Each c In Range("A1:AD65536")
            If c.Interior.ColorIndex = xlNone And c Like Cells(i, "AI") Then
                plage = plage & c.Address & ","
            End If
        Next c
        i = i + 1
    Wend
    plage = Left(plage, Len(plage) - 1)
    Range(plage).Select

End Sub

j'ai modifier le code en adaptant a mon fichier mais cela ne fonctione pas il me dit qu'il il a une erreur.

erreur d'execution '5':

Argument ou appel de procedure incorect

et il me surligne la ligne plage = Left(plage, Len(plage) - 1)

savez vous d'ou vient le probleme ?

merci

enfaite cela fonction mais ces très lent est ce que il est possible de rajouté une formule a la macro qui permettrais de booster la recherche.

merci

le "AD65536" est-il nécessaire ?

il vaudrait mieux trouver la dernière ligne utilisée, cela réduirai d'autant la plage de recherche....

@ bientôt

LouReeD

je nettoierais mon ficher avant de lancer la macro cela me permettra de gagner un peu de temps de recherche déjà la macro fonctionne bien donc c'est bon.

merci de m'avoir aidé

essayez ceci dans l'hypothèse où le nombre de ligne correspond au nombre de valeur de la colonne A :

Dim nb_lignes as long
[...]
nb_lignes = Range("A65536").End(xlUp).Row 
        For Each c In Range("A1:AD" & nb_lignes)
[...]

@ bientôt

LouReeD

bonjour j'ai essayer de le rentré mais cela ne fonctionne pas il y a d'autre chose à modifier apparemment.

Sub Selectionner()
Application.ScreenUpdating = False
Application.Visible = False
Dim i, c
    Dim nb_lignes As Long
i = 1
nb_lignes = Range("A65536").End(xlUp).Row
        For Each c In Range("A1:AD" & nb_lignes)
            If c.Interior.ColorIndex = xlNone And c Like Cells(i, "AI") Then
                plage = plage & c.Address & ","
            End If
        Next c
        i = i + 1
    Wend
    plage = Left(plage, Len(plage) - 1)
Range(plage).Select
    Application.ScreenUpdating = True
    Application.Visible = True
End Sub

Bonjour,

la macro de Loureed detremine le nombre de lignes sur base de la colonne A. Il faut que la dernière ligne de cette colonne soit également la dernière de ton tableau A:AD. Sinon remplace le A par la colonne qui permet de trouver cette dernière ligne de ton tableau.

nb_lignes = Range("A65536").End(xlUp).Row

bonjour toutes les colonnes ce termine bien à la même ligne mais est ce que j'ai pas fait une erreur en remplacent.

je chercher a gagné du temps sur a recherche qui est très longue

la macro de base est le suivante

Sub Selectionner()
Application.ScreenUpdating = False
Application.Visible = False
Dim i, c
    Dim plage
    i = 1
    plage = ""
    While Cells(i, "AI") <> ""
        For Each c In Range("A1:AB65536")
            If c.Interior.ColorIndex = xlNone And c Like Cells(i, "AI") Then
                plage = plage & c.Address & ","
            End If
        Next c
        i = i + 1
    Wend
    plage = Left(plage, Len(plage) - 1)
Range(plage).Select
    Application.ScreenUpdating = True
    Application.Visible = True
End Sub

Merci

re-Bonjour,

combien de lignes as-tu ?

j'ai 65536 lignes de a colonne A à la colonne AB

Bonjour,

dans ce cas, je ne pense pas qu'il y ait moyen d'améliorer les performances.

Bonsoir,

une question : l'objet Range a-t-il des limites ?

@ bientôt

LouReeD

bonsoir ma zone de recherche ce situe uniquement de A1 à AB65536

Oui

ma question est pour les "pro" :

dans Range(plage).Select où plage est égal à par exemple : $a$2,$b$3,$a$4 etc

y a-t-il un nombre maximum d'argument ?

@ bientôt

LouReeD

Rechercher des sujets similaires à "modifier macro"