Rech resultat Cell et remplacer par resultat autre cell
Résolu
Keusti_001
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12249 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
- Starlink direct to cell prix - Accueil - Opérateurs & Forfaits
- Remplacer disque dur par ssd - Guide
- Lexer resultat - Télécharger - Sport
- Remplacer un mot par un autre 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,
Ce n'est pas clair du tout.
Je comprend que vous voulez modifier la date dans votre formule de recherche
devient:
Est-ce bien celà ?
Ce n'est pas clair du tout.
Je comprend que vous voulez modifier la date dans votre formule de recherche
=RECHERCHEV(H7;'[2022-03-29 état stock appro.xlsx]PDLTAPP'!$H:$R;11;FAUX)
devient:
=RECHERCHEV(H7;'[2022-03-28 état stock appro.xlsx]PDLTAPP'!$H:$R;11;FAUX)
Est-ce bien celà ?
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