[Résolu]Scanner une ligne et remplacer les X par une valeur contenue dans une cellule

yoldas

XLDnaute Nouveau
Voilà j'ai essayé d'êcrire un bout de code mais cela ne fonctionne pas.

Je suis un tout petit petit débutant en vba...


Sub Bureau()

Dim nextL As Integer

Worksheets("SMExport").Activate

For i = 3 To nextL
With Worksheets("SMExport")
nextL = .Range("B65536").End(xlUp).Row
End With

With Range("D(i):GC(i)").Select
Selection.Replace What:="X", Replacement:=Range("B(i)"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
Next i

End Sub

Quelqu'un veut bien m'expliquer pourquoi cela ne fonctionne pas et ce que j'ai fais de mal ?

Merci :)
 
Dernière édition:

MichD

XLDnaute Impliqué
Re : Scanner une ligne et remplacer les X par une valeur contenue dans une cellule

Bonjour,

Tu pourrais au moins expliquer ce que tu veux faire.

DEVINER ce que tu veux faire à partir d'une macro qui ne fonctionne pas n'est pas très explicite!


Tu peux essayer ceci :

'-------------------------------------------------------
Sub Bureau()
Dim R As Range, Sh As Worksheet

Set Sh = Worksheets("SMExport")
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sh
With .Range("B3:B" & .Range("B65536").End(xlUp).Row)
For Each R In .Rows
With Sh.Range("D" & R.Row & ":" & "GC" & R.Row)
.Replace What:="X", Replacement:=Sh.Range("B" & .Row), LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With
Next
End With
End With
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'-------------------------------------------------------
 
Dernière édition:

VDAVID

XLDnaute Impliqué
Re : Scanner une ligne et remplacer les X par une valeur contenue dans une cellule

Bonjour Yoldas,
Ton code me parait un peu compliqué pour ce que tu veux faire; pourquoi ne pas placer ton code dans la feuille plutôt que dans un module?
De plus il te bien faut remplacer X pour la colonne D et CG?

Si c'est bien cela voici un code que tu peux insérer dans le code de ta feuille

Sub rien()
Dim x As Integer
x = Range("B65536").End(xlUp).Row
Dim Cel As Range
Set myRange = Range("D1: D" & x)
For Each Cel In myRange
Cel.Replace _
What:="X", Replacement:=Cel.Offset(0, -2).Value, _
SearchOrder:=xlByColumns, MatchCase:=True
Cel.Offset(0, 81).Replace _
What:="X", Replacement:=Cel.Offset(0, -2).Value, _
SearchOrder:=xlByColumns, MatchCase:=True
Next
End Sub

EDIT: Problème de rafraichissement je n'avais pas vu ton post MichD
Bonne journée !
PS: Enregistre ton fichier avant au cas où mais sur mon fichier test le code marche.
En espérant t'avoir aidé
VDAVID
 
Dernière édition:

yoldas

XLDnaute Nouveau
Re : Scanner une ligne et remplacer les X par une valeur contenue dans une cellule

Merci pour vos réponses.

Le code de MichD fonctionne à merveille.

Ce que je voulais faire c'était évidemment au plus simple VDAVID mais comme j'écris tout juste mes premières lignes de codes, je n'arrive pas forcément encore à bien expliquer les choses et de les faire sans me compliquer la vie :)

Le but était de scanner chacune des lignes présentes de la colonne C à la colonne GC, mettons.
Et vérifier le contenu de cette ligne, ou sélection plutôt pour remplacer des "X" par une information qui elle apparaît en colonne B.

Cette manip' à effectuer pour tous les lignes.

La valeur en colonne B étant pour chaque ligne différente.

En tout cas, merci du coup d'main.

Cdt
 

Si...

XLDnaute Barbatruc
Re : Scanner une ligne et remplacer les X par une valeur contenue dans une cellule

salut Tous

Si... tu veux simple (dans le module de la feuille)
Code:
Sub Bureau()
  Dim i As Long
  For i = 3 To Cells(Rows.Count, 2).End(xlUp).Row
     Range("D" & i & ":GC" & i).Replace "X", Range("B" & i)
  Next
End Sub
 

yoldas

XLDnaute Nouveau
Re : Scanner une ligne et remplacer les X par une valeur contenue dans une cellule

Merci Si, c'est exactement ce que je voulais faire.
Aussi simplement que cela, mais j'ai "galéré" sur la syntaxe. L'idée était bien celle-ci :)

Je passe le sujet en résolu.

A+
 

Discussions similaires

Réponses
1
Affichages
122

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin