[Résolu] Fonction Replace dans la référence d'une cellule

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 !

Kim75

XLDnaute Occasionnel
Bonjour le forum,

Je vous présente tous mes voeux de paix, bonheur et santé pour ce nouvel an, bonne année à tous 🙂

L'année a commencé pour moi hier avec ce petit souci de notation que j'arrive pas à régler 🙂

-1. Quand on écrit :
VB:
Sheets("Feuil1").Cells(2, 4).Value = "Test"
On a "Test" en cellule D2

-2. Quand on écrit :
VB:
MsgBox Replace("2:4", ":", ", ")
On a le MessageBox avec la valeur "2, 4"

-3. Et quand on écrit
VB:
Sheets("Feuil1").Cells(Replace("2:4", ":", ", ")).Value = "Test"
On a "Test" en cellule B1 alors que ça devrait être en D2

Si je suis amené à utiliser la fonction Replace dans la référence d'une cellule (avec notation numéro de ligne numéro de colonne), c'est parce que j'utilise une ListView que j'alimente avec un tableau, et que parallèlement je dois me servir des clefs des items, ce serait vraiment sympa si quelqu'un pourrait m'orienter vers une solution.

Cordialement, Kim.
 

Pièces jointes

Bonjour Kim et bonne année 🙂

Un essai comme ceci peut-être? À tester

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Cells(1, 2) = 1 Then Cells(2, 4) = Replace(Cells(1, 2), Cells(1, 2), "Test")
If Cells(3, 4) = 1 Then Cells(3, 2) = Replace(Cells(3, 4), Cells(3, 4), "Test")
mem = Cells(2, 4).Row & ":" & Cells(2, 4).Column
MsgBox Replace(mem, ":", ",")
Cancel = True
End Sub
 
Bonjour et bonne année.

Cette procédure écrit "Test-3" en D2.
VB:
Sub Test()
Dim S$(), L&, C&
S = Split("2:4", ":"): L = S(0): C = S(1)
Sheets("Feuil1").Cells(L, C).Value = "Test-3"
End Sub

Cela dit je n'ai jamais compris à quoi servent les clés dans les ListView.
À partir du moment ou vous accédez de toutes façon positionnellement à leurs éléments, vous avez la même position pour une plage, sous forme ligne et colonne, des deux cotés.
C'est seulement si ces clés pouvaient être dans un ordre quelconque dans la ListView, sans rapport à la position en ligne et colonne, qu'elles pourraient présenter un intérêt. Mais dans ce cas il vaudrait mieux y ranger des adresses de cellules.
Mais je préfèrerais encore ranger les cellules elle même dans un tableau indépendant de la ListView.

Bonjour Lone-wolf
 
Dernière édition:
Bonjour Lone-Wolf, Dranreb, le forum

Merci Lone-Wolf, Dranreb mais ça ne marche malheureusement pas, notamment la méthode de Dranreb consistant à substituer Spilt à Replace, apparemment on ne peut mettre autre chose que des nombre dans la référence d’une cellule, enfin c’est ce qui me semble, je ne sais pas …

La fonction Split provoque une erreur, tout comme la fonction Replace :
VB:
S = Split("2:4", ":"): L = S(0): C = S(1)
Sheets("Feuil1").Cells(L, C).Value = "Test"
Pour répondre à Dranreb qui se demande pourquoi utiliser les cléfs, la réponse est que la plupart du temps on est amené à filtrer la ListView, dont à modifier sa structure et l’ordre des items avec, c’est pourquoi on a besoin des cléfs pour retrouver les items.

Cordialement, Kim.
 
apparemment on ne peut mettre autre chose que des nombre dans la référence d’une cellule,
C'est bien ce que vous y mettez, à moins d'avoir oublié Dim S$(), L&, C& devant.
Mettez Option Explicit en tête de vos modules pour ne plus risquer d'oublier ce genre de chose.

D'habitude je m'arrange pour conserver les numéros dans le tableau source de ses lignes effectivement rangées dans une ListBox ou une ListView dans une table globale nommée TLgn.
Private TLgn() As Long
 
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

Retour