Difference de fonctionnement entre Range("D" & p.Row) et Range(p.Column & "11")

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 !

zeltron

XLDnaute Occasionnel
Bonjour à tout le forum

Je n'arrive pas à comprendre la chose suivante:

Pierrot93 ( que je remercie encore) m'avait aidé pour le code suivant:

Private Sub CmdB1EP_Click()
Dim p As Range
Set Maplage = Selection
For Each p In Maplage
If Range("D" & p.Row).Value = "" Then
p.Value = CmdB1EP.Caption
Else
p.Value = Range("D" & p.Row).Value

End If
Next p
End Sub

Ce code permet de subordonner le résultat de la macro en fonction de la colonne "D", cela sur les différentes lignes d'une sélection. Et il fonctionne très bien.

Dès lors, pour une autre macro, j'ai souhaité subordonner le résultat de la macro en fonction de la ligne 11, cela sur les différentes lignes d'une sélection.

J'ai donc, en adaptant le code ci-dessus, écrit ceci:

Private Sub CmdB4EP_Click()
Dim p As Range
Set Maplage = Selection
For Each p In Maplage
If Range(p.Column & "11").Value = 2 Then
p.Value = "S"
Else
p.Value = CmdB4EP.Caption
End If
Next p
End Sub

Et là cela ne fonctionne pas du tout, il bloque sur la ligne:
If Range(p.Column & "11").Value = 2 Then


Pourtant tout comme le code précédent: If Range("D" & p.Row).Value = "" Then ; permettait de subordonner le résultat de la macro en fonction de la colonne D ; je pensais que le code :If Range(p.Column & "11").Value = 2 ; permettrait de subordonner le résultat de la macro en fonction de la ligne 11 .

Voyez vous d'où vient le problème? Pouvez vous m'aider s'il vous plait?

Vous remerciant par avance

Cordialement

Zeltron
 
Re : Difference de fonctionnement entre Range("D" & p.Row) et Range(p.Column & "11")

Bonjour

avec range, la colonne est une ou 2 lettres

range("A2")

donc utilises plutôt Cells

cells(ligne, colonne)
pour A2 cela donne cells(2,1)

pour une zone je crois
range(cells(2,1),(4,2))
 
Re : Difference de fonctionnement entre Range("D" & p.Row) et Range(p.Column & "11")

bonjour Zeltron,

C'est normale que cela ne marche pas la valeur renvoyée par "p.column" est un chiffre et non une lettre !!!

Essaye plutôt le code ci dessous :

Code:
If cells(11,p.Column ).Value = 2 Then

Ca devrait mieux fonctionner.

Bonne journée
@+
 
Re : Difference de fonctionnement entre Range("D" & p.Row) et Range(p.Column & "11")

Salut Zeltron, Eric, Pierrot,

Juste pour dire que pour une plage c'est Range(Cells(2, 1), Cells(4, 2)) et que juste pour le fun, si vraiment tu veux utiliser un Range malgré que le Cells soit plus adapté, tu peux utiliser ceci (valable seulement pour les colonnes de A a Z) :
If Range(Left(p.Address(0, 0), 1) & "11").Value = 2 Then

Pour l'ensemble des colonnes:
If Range(Left(Cells(1, 2).Address(0, 0), InStr(2, Cells(1, 2).Address, "$") - 2)& "11").Value = 2 Then

@+
 
- 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
7
Affichages
156
Retour