XL 2016 Mettre 0 décalé de 20 cases après avoir trouvé un Texte

  • Initiateur de la discussion Initiateur de la discussion Stéfane
  • 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 !

Stéfane

XLDnaute Occasionnel
VB:
Sub Mettre_0_Cellule_20
Dim zone As Range
Dim der_ligne As Long
Dim I&
    Set zone = Range("C28").CurrentRegion
    der_ligne = zone.Rows(zone.Rows.Count).Row
        For I = der_ligne To 1 Step -1
            If Cells(I, 3).Text = "TEXT 1 " & "TEXT 2" Then
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''       
             Rows(I, 20).Select            C'est là que je bloque
             Selection.FormulaR1C1 = 0
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''             
            End If
        Next
End Sub

Avec cette macro, je souhaite mettre "0" dans la cellule qui se trouve 20 cellules vers la droite sur la même ligne, après la détection des mots ''TEXT 1'' et ''TEXT 2'' dans la colonne "C"
J'ajouterais d'autres mot par la suite, à rechercher, pour réaliser la même démarche.

Auriez-vous svp une solution pour compléter cette macro.

Merci pour votre aide
 
Solution
Je rêve ou c'est bien exactement la solution proposée en post #30 ?
Vous auriez pu l'adapter vous même.
Donc, ma persévérance a pris fin. Je jette l'éponge.
43 posts pour ça, c'est désespérant. 🙂
En PJ la dernière version, vous avez tout pour continuer à adapter au gré de vos fantasmes.
Merci pout tout Sylvanu 👍👍
Désolé d'avoir abusé. 😪
Bonne après midi.
Merci pour votre retour Sylvanu,

Je viens de faire un tableau qui donne une idée de ce à quoi je souhaite arriver.
Le but de la macro à la base et de ne pas avoir à définir de cellule pour retrouver TEXT 1 TEXT 2 .... dans la colonne du tableau mais que la macro le face elle même en lui indiquant les mots qu'elle doit chercher et mettre 0 en colonne 22.
C'est pour cela que je souhaitez savoir si en adaptant la macro il était possible de réaliser une recherche dans la même colonne "C" mais avec des mots différents (sans avoir besoin de lui dire si le mot que je cherche ce trouve 1,2,3,10,30.... lignes en dessous) et une fois trouvé mettre 0 cellule 22.
Cela me permettre de masquer ensuite ces ligne grâce à une autre macro.
 

Pièces jointes

Re

Sylvanu
Sur la base de ton fichier, et en ayant compris cela, j'ai pondu ceci
VB:
Sub Macro11()
[AD2].FormulaR1C1 = "=AND(ISNUMBER(SEARCH(""TEXT 1"",RC[-27])),ISNUMBER(SEARCH(""TEXT 2"",RC[-27])))"
Range("C2:C28").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("AD1:AD2"), Unique:=False
[_FilterDataBase].Offset(, 20).SpecialCells(xlCellTypeVisible).Value = 0
End Sub
Et mes zéros ne vont pas où vont les tiens 😉
 
Merci Stample1600

Cette formule fonctionne bien, c'est juste que du coup je suis obligé de définir moi même le plage (cela n'est pas le but car je souhaite que la macro recherche elle même le TEXT 1 TEXT 2 TEXT 3.... (ce qu'elle fait à la base) et pas besoin de masquer les lignes (une autre macro ce charge de cela). C'est juste mettre 0 case 22 en V si les mots sont trouvés dans la colonne.
 
Re

En V ou en W?

Comme l'a dit sylvanu, si tu joignais un fichier exemple au plus proche de ta réalité, ce serait plus simple pour faire des tests.

Et pour ne pas laisser le filtre, c'est simple
VB:
Sub Macro11b()
Application.ScreenUpdating = False
[AD2].FormulaR1C1 = "=AND(ISNUMBER(SEARCH(""TEXT 1"",RC[-27])),ISNUMBER(SEARCH(""TEXT 2"",RC[-27])))"
Range("C2:C28").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("AD1:AD2"), Unique:=False
[_FilterDataBase].Offset(, 20).SpecialCells(xlCellTypeVisible).Value = 0
ActiveSheet.ShowAllData
End Sub
 
Et la version paramétrée

Testé avec le fichier de Sylvanu
Lancer la macro ito
VB:
Sub ito()
Application.ScreenUpdating = False
ZeroFicator "TEXT 1", "TEXT 2"
End Sub
Private Sub ZeroFicator(Umma As String, Gumma As String)
[AD2].FormulaR1C1 = "=AND(ISNUMBER(SEARCH(" & Chr(34) & Umma & Chr(34) & ",RC[-27])),ISNUMBER(SEARCH(" & Chr(34) & Gumma & Chr(34) & ",RC[-27])))"
Range("C2:C28").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("AD1:AD2"), Unique:=False
[_FilterDataBase].Offset(, 20).SpecialCells(xlCellTypeVisible).Value = 0
ActiveSheet.ShowAllData
End Sub
 
Je l'avais joint page précédente. Voilà je l'ai remis.

Le but de la macro à la base et de ne pas avoir à définir de cellule pour retrouver TEXT 1 TEXT 2 .... dans la colonne du tableau mais que la macro le face elle même en lui indiquant les mots qu'elle doit chercher et mettre 0 en colonne 22.
C'est pour cela que je souhaitez savoir si en adaptant la macro il était possible de réaliser une recherche dans la même colonne "C" mais avec des mots différents (sans avoir besoin de lui dire si le mot que je cherche ce trouve sur les lignes 1,2,3,10,30.... ou ..... lignes en dessous) et une fois trouvé mettre 0 cellule 22.
Cela me permettre de masquer ensuite ces ligne grâce à une autre macro qui me permet aussi de filtrer d'autres lignes.
 

Pièces jointes

Oui bien sur, c'est pour cela que dans cet exemple je recherche TEXT 1 TEXT 2....
Ce que fait cette macro :

Sub A_Masquer_Lignes_NON_Voulues()

Dim zone As Range, der_ligne As Long, I&
Set zone = Range("C28").CurrentRegion
der_ligne = zone.Rows(zone.Rows.Count).Row
For I = der_ligne To 1 Step -1
If Cells(I, 3) Like "*TEXT 1*" Then
Cells(I, 22) = 0
End If
Next
End Sub

C'est juste voir si à côté de TEXT 1 comment ajouter TEXT 2 TEXT3 ... pour qu'elle cherche les mots TEXT 2 TEXT3 ... sachant que ces mots sont en colonne C sur des cellules que va chercher la macro et mettre 0 en V cellule 22.

Staple1600 j'ai essayé, ne te fâche, pas mais là j'ai du mal à adapter cette macro sur mon tableau..... J'ai pas ton niveau....
 
Si cela peut-être plus clair, c'est pour éviter de faire :

Sub A_Masquer_Lignes_NON_Voulues()

Dim zone As Range, der_ligne As Long, I&
Set zone = Range("C28").CurrentRegion
der_ligne = zone.Rows(zone.Rows.Count).Row
For I = der_ligne To 1 Step -1
If Cells(I, 3) Like "*TEXT 1*" Then
Cells(I, 22) = 0
End If
Next

Set zone = Range("C28").CurrentRegion
der_ligne = zone.Rows(zone.Rows.Count).Row
For I = der_ligne To 1 Step -1
If Cells(I, 3) Like "*TEXT 2*" Then
Cells(I, 22) = 0
End If
Next

ETC...........................................................
End Sub

Mais quelque chose de plus simple du style : If Cells(I, 3) Like "*TEXT 1*","*TEXT 2*"......... Then
 
Re

La macro liée à ton bouton est restée sur ton PC 😉
'https://t*******c-my.sharepoint.com/personal/stephane_****_cpg-europe_com/Documents/Desktop/2022 OFFRE CPG.xlsm'!AA_test_00000

NB: Tu auras remarqué que j'ai préservé ton anonymat 😉
 
Oui il fonctionne très bien sur la feuille de Sylvanu à la seule condition que sur la même ligne il y ai TEXT 1 et TEXT 2
Dans mon cas comme sur la feuille jointe ces 2 mots sont plutôt dans la même colonne C et j'ai différents mots comme cela à trouver pour mettre 0 en V.
D'où la macro si dessus ou je dois la reprendre pour chaque mot.

J'espère que grâce au tableau ma recherche est un peu plus clair.
 
Re,
Si c'est pour éviter ce qui est en post #24, voir PJ.
La liste de mot recherché est dans la liste de mots, et la plage où cherchée est automatique.
VB:
Sub Mettre_0_Cellule_20()
    Effacer
    PL = Range("C1").End(xlDown).Row
    DL = Range("C65500").End(xlUp).Row
    Set Plage = Range(Cells(PL, "C"), Cells(DL, "C"))
    For L = 3 To 7
        Mot = Range("AC" & L)
        If Mot <> "" Then
            For I = PL To DL
                If Cells(I, "C") Like "*" & Mot & "*" Then
                    Cells(I, 23) = 0
                End If
            Next I
        End If
    Next L
End Sub
 

Pièces jointes

- 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

Discussions similaires

Réponses
4
Affichages
332
Réponses
2
Affichages
371
Réponses
12
Affichages
419
Réponses
3
Affichages
569
Réponses
10
Affichages
714
Retour