Rech resultat Cell et remplacer par resultat autre cell
Résolu
Keusti_001
Messages postés
31
Statut
Membre
-
Le Pingou Messages postés 12375 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12375 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Vrai novice en macro, je cale sur un élément qui me parait tout bête.
En case R3, j'ai la RECHV ci-dessous :
En E1 :
En G1 :
E1 et G1 sont au format date "aaaa-mm-jj"
Via macro, j'aimerais pouvoir rechercher la date dans la RECHV de R3 (égale à E1) et la remplacer par le résultat obtenu en G1.
J'ai tenté de faire la macro via la fonction "Enregistrer macro" et d'utiliser la fonction "Recherche et Remplacer".
J'obtiens le code ci-dessous :
Je pensais que dans mon code il suffirait de remplacer :
par
et
par
Mais visiblement, c'est pas aussi simple. Probablement qu'au lieu d'aller chercher E1 et G1, je dois aller chercher les résultats convertis en texte ?
Une bonne âme pour adapter mon code et m'expliquer le fonctionnement?
Un grand merci pour votre aide les amis !
Bàv,
Keusti
Vrai novice en macro, je cale sur un élément qui me parait tout bête.
En case R3, j'ai la RECHV ci-dessous :
=RECHERCHEV(H7;'[2022-03-29 état stock appro.xlsx]PDLTAPP'!$H:$R;11;FAUX)
En E1 :
=SERIE.JOUR.OUVRE(C1;-1)==> 2022-03-29
En G1 :
=SERIE.JOUR.OUVRE(E1;-1)==> 2022-03-28
E1 et G1 sont au format date "aaaa-mm-jj"
Via macro, j'aimerais pouvoir rechercher la date dans la RECHV de R3 (égale à E1) et la remplacer par le résultat obtenu en G1.
J'ai tenté de faire la macro via la fonction "Enregistrer macro" et d'utiliser la fonction "Recherche et Remplacer".
J'obtiens le code ci-dessous :
Sub Macro4()
' Macro4 Macro
Range("R7").Select
ActiveCell.Replace What:="2022-03-29", Replacement:="2022-03-28", LookAt _
:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Cells.Find(What:="2022-03-29", After:=ActiveCell, LookIn:=xlFormulas2, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
End Sub
Je pensais que dans mon code il suffirait de remplacer :
ActiveCell.Replace What:="2022-03-29"
par
ActiveCell.Replace What:=E1
et
Replacement:="2022-03-28"
par
Replacement:=G1
Mais visiblement, c'est pas aussi simple. Probablement qu'au lieu d'aller chercher E1 et G1, je dois aller chercher les résultats convertis en texte ?
Une bonne âme pour adapter mon code et m'expliquer le fonctionnement?
Un grand merci pour votre aide les amis !
Bàv,
Keusti
Configuration: Windows / Chrome 99.0.4844.82
A voir également:
- Rech resultat Cell et remplacer par resultat autre cell
- Resultat foot - Télécharger - Vie quotidienne
- Remplacer disque dur par ssd - Guide
- Wannonce remplacer - Guide
- Resultat bac 2025 - Guide
- Rechercher et remplacer word - Guide
4 réponses
Bonjour,
Petite oubli de ma part, remplacer:
Par ceci :
Note, l'onglet et le petit appendice qui permet de sélectionner la feuille
Petite oubli de ma part, remplacer:
Next Application.ScreenUpdating = False 'Bloque l'actualisation de l'onglet
Par ceci :
>Next Application.ScreenUpdating = True 'Active l'actualisation de la feuille
Note, l'onglet et le petit appendice qui permet de sélectionner la feuille
Bonjour,
Vous pouvez essayer ce code:
Vous pouvez essayer ce code:
Sub Modifier_Formules_RECHV()
Dim c As Range, form As Variant
Dim Cell_E1 As Variant, Cell_G1 As Variant
Cell_E1 = Format(Range("E1"), "yyyy-mm-dd"): Cell_G1 = Format(Range("G1"), "yyyy-mm-dd")
Application.ScreenUpdating = False
For Each c In ActiveSheet.Range("R3")
If InStr(c.FormulaLocal, Cell_E1) <> 0 Then
form = Replace(c.FormulaLocal, Cell_E1, Cell_G1)
c.FormulaLocal = form
End If
Next
Application.ScreenUpdating = False
End Sub
Hello Pingou,
C'est exactement ça, merci beaucoup ! :)
Histoire de comprendre ce que dit la macro et gagner un peu en autonomie, pourrais-tu me confirmer/corriger mon interprétation de ton code?
Bonne journée,
Keusti
C'est exactement ça, merci beaucoup ! :)
Histoire de comprendre ce que dit la macro et gagner un peu en autonomie, pourrais-tu me confirmer/corriger mon interprétation de ton code?
Sub Modifier_Formules_RECHV()
'Défini c comme cellule cible ou appliquer la macro, et la formule de celle-ci comme variable.
Dim c As Range, form As Variant
'Défini les variables "Cell_G1" et "Cell_C1"
Dim Cell_G1 As Variant, Cell_C1 As Variant
'Défini le format de "Cell_G1" comme "yyyy-mm-dd". Idem pour "Cell_C1"
Cell_G1 = Format(Range("G1"), "yyyy-mm-dd"): Cell_C1 = Format(Range("C1"), "yyyy-mm-dd")
'Bloque l'actualisation de l'onglet
Application.ScreenUpdating = False
For Each c In ActiveSheet.Range("R3")
'Défini c, qui est la cellule ou appliquer la macro
If InStr(c.FormulaLocal, Cell_G1) <> 0 Then
'Si le résultat de "Cell_G1" est différent de 0, alors
form = Replace(c.FormulaLocal, Cell_G1, Cell_C1)
'Remplace, dans la formule de c, Cell_G1 par Cell_C1
c.FormulaLocal = form
'??
End If
Next
Application.ScreenUpdating = False
'Bloque l'actualisation de l'onglet
End Sub
Application.ScreenUpdating = False==> Je comprends l'intérêt de bloquer l'actualisation du fichier, mais ne faut-il pas le ré-activer en fin de macro?
Bonne journée,
Keusti