Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

cells (row, column)

  • Initiateur de la discussion Initiateur de la discussion CISCO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CISCO

XLDnaute Barbatruc
Bonjour à tous

Ca fait... une quinzaine d'années que je ne n'ai pas fait de macro, alors...😕 A l'époque, c'était en "franglais", on arrivait à se dépatouiller en enregistrant une macro, puis en modifiant un peu le contenu... A moins que cela ne soit l'age🙄

Donc, voila mon petit problème : j'ai enregistré une petite macro imitant la recherche de valeur cible dans une cellule, par exemple B1. La valeur à atteindre est 0, et la valeur à modifier se trouve dans la colonne juste avant, sur la même ligne, donc en A1.
J'essaye de généraliser cette minuscule macro pour pouvoir l'utiliser dans n'importe quelle cellule, mais ça bugue (erreur 1004), et l'aide plante.

Voila ce que j'ai écrit :
Range(cells(ligne,colonne)).GoalSeek Goal:=0, ChangingCell:=Range(cells(ligne,colonne-1))

J'ai essayé avec row, column, mais ça bugue toujours. Conclusion, deux petites questions :
Où est-ce que je me plante ?
Est-ce que par hasard il existerait une fonction faisant la même chose que la fenêtre valeur cible, du style VALCIBLE(cellule à définir; valeur à atteindre;cellule à modifier) ?

Merci à tous et bonne journée

PS : Bien sûr, ça tournait avec, mais uniquement en A1 et B1
Range("B1") GoalSeek Goal:=0, ChangingCell:=Range("A1")
 
Dernière édition:
Re : cells (row, column)

Bonjour,

Normalement cela aurait dû fonctionner. Il faudrait que j'essaie.

Les modifications d'emplacement dans la feuille ne suivent pas dans la macro. Si tu veux pouvoir changer les deux cellules de place, il faut les nommer dans la feuille de calculs :

ex. : ValModif pour A1 et ValAtteindre pour B1

et mettre dans la formule de la macro :

Range("ValAtteindre") GoalSeek Goal:=0, ChangingCell:=Range("ValModif")

Je n'ai pas fait l'essai, mais si tu ajoutes/supprimes des lignes et/ou des colonnes la macro doit continuer à fonctionner

Cordialement
 
Dernière édition:
Re : cells (row, column)

J'ai essayé cela (en fait, il faut juste indiquer dans quelle feuille tu travailles) :

Worksheets("Feuil1").Select
Cells(2, 1).GoalSeek Goal:=0, ChangingCell:=Cells(1, 1)

cela fonctionne mais si tu veux que cela fonctionne ailleurs, il faut changer les valeurs désignant les cellules dans Cells(ligne,colonne)...

Cordialement
 
Re : cells (row, column)

Comme nous n'avons pas ton code en entier, je ne peux que supposer... Le problème peut survenir si en A1 tu fais ChangingCell:=Range(cells(ligne,colonne-1)) qui donne 0 comme N° de colonne... A tout hasard...
 
Re : cells (row, column)

Je n'avais pas tout saisi de ce que tu voulais faire, je pense que l'exemple ci-joint conviendra. Il faut remettre A1 à 0 avant de lancer la macro "Principal" pour voir que cela fonctionne.

Il faut tenir compte de ce qu'a dis Epaf.

Cordialement
 

Pièces jointes

Re : cells (row, column)

Bonjour à tous, bonjour Mécano41 (Tiens donc, vous ici !), bonjour Epaf

Merci pour vos propositions. Malheureusement, malgré vos conseils, je n'arrive pas à faire exactement ce que je voudrais.

Je m'explique : Il faudrait que la macro puisse être utilisée n'importe où (sauf dans la colonne A, suite à la remarque de Epaf). Je met en pièce jointe un petit exemple. Dans celui-ci, la macro marche uniquement en C2, D2. En pratique j'aimerai bien qu'en l'exécutant en D4, elle modifie correctement C4. Idem en D6, avec la réponse en C6, etc sans qu'on est à repérer ces positions directement dans la macro.

Il me semble qu'il y avait une astuce pour qu'une macro travaille dans la fenêtre active, en utilisant des cellules repérées par rapport à cette cellule active, et non pas toujours uniquement à un endroit particulier, à l'époque où c'était en VBA franglais... mais je ne la retrouve plus. Dommage.

J'ai essayé en nommant les colonnes C et D, mais cela ne fonctionne pas.

Bonsoir et à plus, je l'espère.
 

Pièces jointes

Re : cells (row, column)

Bonjour à tous

Pas mal, Ninbihan, pas mal du tout.

Mais malheureusement, cela ne résoud le "problème" que dans une colonne, et pas n'importe où, comme espéré.

Comme je dois utiliser cette macro dans un autre programme plus complexe, et pour ma, notre "culture" dans ce domaine, quelqu'un aurait-il une autre solution pour lancer une macro à partir d'une donnée dans n'importe quelle cellule active ?

Bonne journée à tous et Merci.

PS =nin bihan.... nin = enfant en castillan et bihan = petit en breton ?
 
Re : cells (row, column)

Une question : Tu dis
J'essaye de généraliser cette minuscule macro pour pouvoir l'utiliser dans n'importe quelle cellule
Veux-tu que cette macro soit lancée pour chaque modification manuelle de cellule ou fais-tu cette recherche du zéro par macro pour l'utiliser par macro exclusivement ?
@+
 
Re : cells (row, column)

bonjour CISCO

Salut ninbihan, mecano41, Epaf

un essai

j'ai modifié la presentation des equations

on peut selectionner n'importe quelle cellule sauf en colone A et lancer la macro test
l'expression de la colonne A sera evaluée dans la cellule a gauche de la cellule selectionnée
 

Pièces jointes

Re : cells (row, column)

Bonjour à tous, bonjour Pierrejean.

Merci Pierrejean. Ta petite macro fait vraiment ce qu'il me faut.

Malheureusement, elle ne fonctionne pas chez moi. Mon "ordi" ne reconnait pas la fonction Replace... Je vais fouiller pour voir l'origine de ce bug...

Bonsoir.
 
Re : cells (row, column)

Bonsoir tous le monde,

Si la fonction Replace ne fonctionne pas, tu peux utiliser la fonction Substitute : (Cf l'aide d'Excel )

SUBSTITUE(texte;ancien_texte;nouveau_texte;no_position)

Tu ne serais pas en Excel 97 ?, Replace n'est pas reconnu par cette version d'Excel.

Bonne nuit
 
Re : cells (row, column)

😱Je n'ai pas tout suivi mais, si tu veux remplacer du texte dans une formule à la demande, selon la cellule sélectionnée tu peux placer ton code dans Worksheet_SelectionChange (?)
Autre pb que je n'ai pas compris : Le remplacement est-il toujours le même ?
Si tu précises ce que tu veux remplacer et par quoi tu veux le remplacer, tu peux utiliser Target pour définir la colonne ou la cellule. Ex :
Le code suivant appliquee en A1 remplace C1 en B1 dans la formule
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Target.Column = 2 Then Exit Sub 'si ce n'est pas la colonne 2, on sort
Dim NewMot, OldMot, Phrase$
    OldMot = Target.Offset(0, 2).Address(False, False) 'à adapter
    NewMot = Target.Offset(0, 1).Address(False, False) 'à adapter
    Target.Formula = Remplacer(Target.Formula, OldMot, NewMot)
End Sub

Function Remplacer(Phrase, OldMot, NewMot)
Dim laPhrase
    laPhrase = Phrase
    Do While InStr(laPhrase, OldMot) <> 0
        laPhrase = Left(laPhrase, InStr(1, laPhrase, OldMot) - 1) & _
        NewMot & Right(laPhrase, Len(laPhrase) - (InStr(laPhrase, OldMot) + Len(OldMot) - 1))
        Debug.Print laPhrase
    Loop
    Remplacer = laPhrase
End Function
Si tu veux le faire sur toute une colonne, tu places l'appel dans une boucle.
Si tu veux réaliser le remplacement systématique, tu crées une boucle sur la colonne et, dans l'appel à la fonction, remplaces Target par l'adresse de la formule.
Code:
Sub ChangerDadresse()
Dim NewMot, OldMot, Phrase$
Dim Plage as range, cell as range
    set Plage = Range("B1:B" & derniereLigne)
    For each Cell in Plage
        OldMot = Cell.Offset(0, 2).Address(False, False) 'à adapter
        NewMot = Cell.Offset(0, 1).Address(False, False) 'à adapter
        Cell.Formula = Remplacer(Cell.Formula, OldMot, NewMot)
    Next
ou encore dans une boucle
Code:
    for NoLigne = 1 to derniereLigne
etc.
A tout hasard... puisque je n'ai pas vraiment compris 😱
@+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
911
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
5
Affichages
665
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…