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.
Bonjour (d'ailleurs l'est où le tien de tit Bonjour...)

Une possibilité en guise de piste
(si bien il n'y a rien dans le K:K)
VB:
Sub test()
Application.ScreenUpdating = False
Range("K28:K120").FormulaR1C1 = "=IF(RC[-8]=""TEXT 1 TEXT 2"",""$$$"",0)"
Columns("K").SpecialCells(xlCellTypeFormulas, 2).Offset(, 12) = 0
Columns("K").Clear
End Sub
 
Bonsoir Stéphane, Staple,
d'ailleurs l'est où le tien de tit Bonjour... 😂😂😂
ou une approche conservant votre structure :
VB:
Sub Mettre_0_Cellule_20()
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*TEXT 2*" Then
                Cells(I, 23) = 0
            End If
        Next
End Sub
dans la cellule qui se trouve 20 cellules vers la droite sur la même ligne
Pour moi, 20 colonnes à droite de la colonne C est la colonne 23, tout simplement.
 
Bonjour à Tous,

Désoler, j'ai en fait écraser mon "Bonjour" en insérant ma macro.
Loin de moi l'idée de manquer du minimum de politesse.

J'avais essayer avec " Cells(I, 23) = 0" , "Rows(I,23).FormulaR1C1 = 0" etc...
mais cela ne donne rien, je n'est pas de Zéro qui s'inscrit en cellule "V"

Pour la formule la formule excel j'ai bien des zéro qui s'inscrivent mais sur toute la colonne (V28:V120), comme si le mot "TEXT 1" n'était pas détecté.

Etonnant que cela ne fonctionne pas ......
 
Re

Pour que mon test fonctionne, inscrit dans quelques cellules à partir de C28 dans la colonne C
TEXT 1 TEXT 2
puis lance ma macro

Tu verras qu'il y aura des 0 dans la colonne W sur les lignes où il y a TEXT 1 TEXT 2 en colonne C.

Je le sais puisque j'ai évidemment testé mon code avant de le poster sur le forum...
 
Voici ce que je teste pour détecter la valeur TEXT 1 en Colonne 3 :

Sub AA_test_METTRE_ZERO()
Application.ScreenUpdating = False
Range("U90:U110").FormulaR1C1 = "=IF(RC[-18]=""TEXT 1 TEXT 2"",""$$$"",0)"
Columns("U").SpecialCells(xlCellTypeFormulas, 2).Offset(, 1) = 0
Columns("U").Clear
End Sub

Je dois certainement mal mis prendre? la formule s'inscrit en "U"
J'ai une erreur sur :
"Columns("U").Clear"
" cette action ne peut-être appliquée à une cellule fusionnée"
Et des "0" sur toute la colonne ("U90:U120") et pas uniquement ou j'indique "TEXT 1"
 
Re,
Il serait bon de fournir un petit fichier test représentatif.
Car, évidemment, comme Staple je teste les macros avant de les livrer. Voir PJ.
Donc si ça ne marche pas, c'est que l'hypothèse du fichier n'est pas la bonne.
 

Pièces jointes

Re

Stéfane, mon fanou (oui je deviens tendre quand je m'énerve! ou pire quand l'XLDnaute n'en fait qu'à sa tête 😡)
Pourquoi n'avoir pas simplement fait le test que j'ai décris !!!
Donc en colonne C et sans rien toucher à mon code

Aprés seulement, on pourra faire des adaptations.

NB: Qui dit test, dit évidemment dans un nouveau classeur, sur une feuille vierge.
 
Re,

Merci beaucoup pour ton tableau Sylvanu, il m'a permis de comprendre mon erreur.
Et oui cela fonctionne très bien.
En fait "TEXT 1", "TEXT 2" etc..... ne sont pas sur la même ligne mais sont sur des lignes qui se trouvent les une en dessous des autres, de ce fait en ayant "TEXT 1" et "TEXT 2" dans la formule si il n'y a que TEXT 1 sur la ligne la macro ne la prend pas en compte.
C'est en voyant "TEXT 1" et "TEXT 3" que j'ai compris.

Existe t'il une solution pour réaliser la macro en partant du principe cité ci-dessus ou faut' il créer une macro pour chaque ligne différente ? c.a.d. :
TEXT 1
TEXT 2
TEXT 3
etc.....
Merci.
 
Re

ET qu'en est-il de mon test?
(le message#9 était rédigé en mode humour au cas où il fallait le préciser)

En fait "TEXT 1", "TEXT 2" etc..... ne sont pas sur la même ligne mais sont sur des lignes qui se trouvent les une en dessous des autres, de ce fait en ayant "TEXT 1" et "TEXT 2"
Ce n'est ce qui était décrit dans le message#1
Dans ce cas, le filtre pourrait être utilisé.
 
Re,
Il serait bon de fournir un petit fichier test représentatif.
Vous trouvez pas que ce serait plus simple !
En PJ un essai avec :

VB:
Sub Mettre_0_Cellule_20()
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*" And Cells(I + 1, 3) Like "*TEXT 2*" Then
                Cells(I, 23) = 0
            End If
        Next
End Sub
 

Pièces jointes

Désolé Staple1600, effectivement en suivant votre conseil sur une nouvelle feuille cela fonctionne lorsque TEXT 1 et TEXT 2 sont tous 2 dans la mêmes ligne et effectivement cela ne fonctionnait pas parce que TEXT 1 et TEXT 2 n'était pas sur la même ligne.
Je n'avait pas apporté cette précision lors de ma demande initiale. Désolé😢😢

Pas de problème pour l'humour, je vais peut-être voir avec le site si je peux pour changer mon pseudo en "fanou" !!! du coup....
 
Re

Sylvanu
Pourquoi seules ces cellules reçoivent un 0 ?
(j'ai fait le test avec ton dernier fichier)
$W$27
$W$26
$W$25
$W$24
$W$6
$W$3

Ils ne devrait pas y en avoir d'autres?

Ou alors j'ai pas tout compris. 😉

=>Stéfane.
Ouf, je suis content que tu n'ais vu que de l'humour dans le message#9 😉
 
Re,
J'ai essayé d'obtenir un petit fichier test, mais cela semble insurmontable. 😭
J'ai compris qu'on mettait 0 si on trouve TEST1 sur la ligne N et TEST2 sur la ligne N+1.
En fait "TEXT 1", "TEXT 2" etc..... ne sont pas sur la même ligne mais sont sur des lignes qui se trouvent les une en dessous des autres
Mais n'ayant pas de décodeurs adéquat, je ne garantis rien. 🙂
 
- 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