Faire appel à une cellule dans une macro

Barba

XLDnaute Nouveau
Bonjour, je voudrais tout simplement utiliser la cellule I4 de la Feuil1 dans la macro suivante.
Il s'agit de remplacer "34" par la valeur de la cellule I4 de la Feuil1 (Ici "35")

Selection.Replace What:="34", Replacement:="35", LookAt:=xlPart,

Mais je ne suis pas fichu d'y parvenir.

Quelqu'un aurait-il le bon vouloir de m'aider?

Code:
  Sheets("BASE").Select
    Selection.Copy
    Sheets("Modèle").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWindow.DisplayFormulas = True
    Range("A2:F2,A5:A52").Select
    Range("A5").Activate
    Selection.Replace What:="34", Replacement:="35", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    ActiveWindow.DisplayFormulas = False


Merci beaucoup d'avance!

Quentin
 

VDAVID

XLDnaute Impliqué
Re : Faire appel à une cellule dans une macro

Bonjour Barba,

Peut-être comme ceci:

Code:
Sub rien()
  
    Sheets("BASE").Cells.Copy Destination:=Sheets("Modèle").Cells
    Sheets("Modèle").Range("A5").Value = Sheets("Feuil1").Range("I4").Value
    Application.CutCopyMode = False

  End Sub

Bonne journée !
 

Barba

XLDnaute Nouveau
Re : Faire appel à une cellule dans une macro

Bonjour HULK,

Merci pour ta réponse rapide! Ca m'aide beaucoup!
La marco ne bug plus, néamoins, je ne comprends absolument pas pourquoi, mais elle ne fait pas le remplacement correctement... 34 et toujours remplacé par 35 même si I4 varie ....
 

Barba

XLDnaute Nouveau
Re : Faire appel à une cellule dans une macro

Merci VDAVID,

Malheureusement, il y avait déjà une erreur dans mon code, ça n'est pas seulement la cellulle A5 de la feuille modèle, que je veux modifier, mais l'ensemble toutes les chaines de caractères formant "34" dans l'ensemble des formules des plages ("A2:F2,A5:A52").

La galère!

En tous cas Merci beaucoup!

Quentin
 

Hulk

XLDnaute Barbatruc
Re : Faire appel à une cellule dans une macro

Re,

Sans fichier joint, difficile de t'aider correctement. Peut-être ai-je mal compris et que VDavid a mieux compris.

Regarde ce qu'il te propose et si ça ne joue pas, joins ton fichier.

Dans l'attente.
 

Barba

XLDnaute Nouveau
Re : Faire appel à une cellule dans une macro

Je pensais m'être assez bien exprimé,

Voici le fichier, Il risque d'être assez abrupt vu le que je ne joint pas le contenu lié, mais je pense que pour résoudre mon problème, l'essentiel y est.
 

Pièces jointes

  • Besoin1.xlsm
    211.7 KB · Affichages: 46

VDAVID

XLDnaute Impliqué
Re : Faire appel à une cellule dans une macro

Re Barba, Bonjour Hulk :)

Un autre test, à mettre dans le module de ton classeur.
Par contre en I4 de la feuille1 la valeur est de 34, or il n'y a pas trop d'intérêt à remplacer "34" par "34" ^^

Code:
Dim maPlage As Range, Cel As Range
Dim WsSource As Worksheet, WsCible As Worksheet, WsRef As Worksheet
Dim Chaine As String

Sub Pas34()
    
    Set WsSource = Sheets("BASE") 'Feuille contenant les données
    Set WsCible = Sheets("Modèle") 'Feuille réceptionnant les données
    Set WsRef = Sheets("Feuil1") 'Feuille de référence pour la valeur à changer
   
    WsSource.Cells.Copy Destination:=WsCible.Cells
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    
    
    Set maPlage = WsCible.Range("A2:F2", "A5:A" & WsCible.Range("A65536").End(xlUp).Row) 'Plage de destination, là où la macro va se traiter
        
        For Each Cel In maPlage
            
            Cel.FormulaArray = Replace(Cel.Formula, "34", WsRef.Range("I4").Value)
        
        Next Cel
            


End Sub
Bonne journée
 

Pièces jointes

  • Besoin1(1).xlsm
    224.3 KB · Affichages: 46

Barba

XLDnaute Nouveau
Re : Faire appel à une cellule dans une macro

Rebonjour VDAVID !

Un énorme merci pour ton aide!

S'il y a une solution pour que la macro s'execute plus rapidement, je suis preneur, mais en tous cas ça marche !

Merci beaucoup !

Bien cordialement !

Quentin
 

VDAVID

XLDnaute Impliqué
Re : Faire appel à une cellule dans une macro

Re Barba, Hulk,

Effectivement j'ai oublié de le mettre dans la macro mais pour accélerer le temps de traitement il faut mettre la double instruction:

Application.ScreenUpdating = False
Application.Calculation = xlManual

'Code

Application.ScreenUpdating = True
Application.Calculation = xlAutomatic

Comme ceci:

Code:
Dim maPlage As Range, Cel As Range
Dim WsSource As Worksheet, WsCible As Worksheet, WsRef As Worksheet
Dim Chaine As String

Sub Pas34()
    
    Set WsSource = Sheets("BASE") 'Feuille contenant les données
    Set WsCible = Sheets("Modèle") 'Feuille réceptionnant les données
    Set WsRef = Sheets("Feuil1") 'Feuille de référence pour la valeur à changer

Application.ScreenUpdating = False
Application.Calculation = xlManual

    WsSource.Cells.Copy Destination:=WsCible.Cells
    Application.CutCopyMode = False
    Application.DisplayAlerts = False
    
    
    Set maPlage = WsCible.Range("A2:F2", "A5:A" & WsCible.Range("A65536").End(xlUp).Row) 'Plage de destination, là où la macro va se traiter
        
        For Each Cel In maPlage
            
            Cel.FormulaArray = Replace(Cel.Formula, "34", WsRef.Range("I4").Value)
        
        Next Cel
            

Application.ScreenUpdating = True
Application.Calculation = xlAutomatic 

End Sub

Content si ça t'as aidé :)
 

Discussions similaires

Statistiques des forums

Discussions
294 211
Messages
1 936 898
Membres
188 102
dernier inscrit
benefaballe