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

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
 

Staple1600

XLDnaute Barbatruc
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

Stéfane

XLDnaute Occasionnel
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 ......
 

Staple1600

XLDnaute Barbatruc
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...
 

Stéfane

XLDnaute Occasionnel
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"
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Classeur3.xlsm
    15.1 KB · Affichages: 2

Staple1600

XLDnaute Barbatruc
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 :mad:)
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.
 

Stéfane

XLDnaute Occasionnel
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.
 

Staple1600

XLDnaute Barbatruc
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é.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Classeur3 (1).xlsm
    15.3 KB · Affichages: 3

Stéfane

XLDnaute Occasionnel
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....
 

Staple1600

XLDnaute Barbatruc
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 ;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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. 🙂
 

Discussions similaires

Statistiques des forums

Discussions
312 102
Messages
2 085 304
Membres
102 857
dernier inscrit
Nony1931