Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplacement d'une plage dans une colonne par Refedit

4 réponses
Avatar
Sylian
Bonjour,

J'ai cette ligne qui fonctionne bien :
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Que j'aimerai remplacer par une colonne (ou une partie d'une colonne)
sélectionnée par un RefEdit.

J'ai tenté un truc comme ça :

For Each c In Range(Range(RefEdit1.Value).Row &
(Range(RefEdit1.Value).Row + Range(RefEdit1.Value).Row.Count - 1))

En considérant que ma plage à traiter soit la 1ère colonne de ma
sélection de la ligne Range(RefEdit1.Value).Row à
Range(RefEdit1.Value).Row.Count

Comment remplacer mon For Each c In Range( ????) avec mon RefEdit ?

Merci !

4 réponses

Avatar
isabelle
bonjour Sylian,

plg = RefEdit1.Value
ligneDébut = Range(plg).Item(1).Row
ColonneDébut = Range(plg).Item(1).Column
ligneFin = Range(plg).Rows.Count + ligneDébut - 1
MsgBox Range(Cells(ligneDébut, ColonneDébut), Cells(ligneFin,
ColonneDébut)).Address

isabelle


Sylian a écrit :
Bonjour,

J'ai cette ligne qui fonctionne bien :
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Que j'aimerai remplacer par une colonne (ou une partie d'une colonne)
sélectionnée par un RefEdit.

J'ai tenté un truc comme ça :

For Each c In Range(Range(RefEdit1.Value).Row &
(Range(RefEdit1.Value).Row + Range(RefEdit1.Value).Row.Count - 1))

En considérant que ma plage à traiter soit la 1ère colonne de ma
sélection de la ligne Range(RefEdit1.Value).Row à
Range(RefEdit1.Value).Row.Count

Comment remplacer mon For Each c In Range( ????) avec mon RefEdit ?

Merci !


Avatar
Sylian
Merci beaucoup pour l'astuce Isabelle.
Ma macro d'origine qui était :

x = 1
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Set Cherch = Range("F1:F" & [F65536].End(xlUp).Row).Find(c,
LookAt:=xlWhole)
If Cherch Is Nothing Then
fl2.Range("C" & x) = c
x = x + 1
End If
Next c

Devient à présent :

plg1 = Venn.RefEdit1.Value
ligneDébut1 = Range(plg1).Item(1).Row
ColonneDébut1 = Range(plg1).Item(1).Column
ligneFin1 = Range(plg1).Rows.Count + ligneDébut1 - 1
x = 1
For Each c In Range(Cells(ligneDébut1, ColonneDébut1),
Cells(ligneFin1, ColonneDébut1))
Set Cherch = Range(Cells(ligneDébut2, ColonneDébut2), Cells(ligneFin2,
ColonneDébut2)).Find(c, LookAt:=xlWhole)
If Cherch Is Nothing Then
fl2.Range("C" & x) = c
x = x + 1
End If
Next c

Il n'y a pas d'erreur mais cela ne m'affiche aucun résultat ... J'y
travaille. J'ai du faire une erreur. Bizarre que ça fonctionne bien sans
le RefEdit pourtant.


isabelle a écrit :
bonjour Sylian,

plg = RefEdit1.Value
ligneDébut = Range(plg).Item(1).Row
ColonneDébut = Range(plg).Item(1).Column
ligneFin = Range(plg).Rows.Count + ligneDébut - 1
MsgBox Range(Cells(ligneDébut, ColonneDébut), Cells(ligneFin,
ColonneDébut)).Address

isabelle


Sylian a écrit :
Bonjour,

J'ai cette ligne qui fonctionne bien :
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Que j'aimerai remplacer par une colonne (ou une partie d'une colonne)
sélectionnée par un RefEdit.

J'ai tenté un truc comme ça :

For Each c In Range(Range(RefEdit1.Value).Row &
(Range(RefEdit1.Value).Row + Range(RefEdit1.Value).Row.Count - 1))

En considérant que ma plage à traiter soit la 1ère colonne de ma
sélection de la ligne Range(RefEdit1.Value).Row à
Range(RefEdit1.Value).Row.Count

Comment remplacer mon For Each c In Range( ????) avec mon RefEdit ?

Merci !




Avatar
isabelle
bonjour Sylian,

il faudrait ajouter la feuille
For Each c In Sheets("LaFeuille").Range("E1:E" &
Sheets("LaFeuille").[E65536].End(xlUp).Row)

isabelle


Sylian a écrit :
Merci beaucoup pour l'astuce Isabelle.
Ma macro d'origine qui était :

x = 1
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Set Cherch = Range("F1:F" & [F65536].End(xlUp).Row).Find(c,
LookAt:=xlWhole)
If Cherch Is Nothing Then
fl2.Range("C" & x) = c
x = x + 1
End If
Next c

Devient à présent :

plg1 = Venn.RefEdit1.Value
ligneDébut1 = Range(plg1).Item(1).Row
ColonneDébut1 = Range(plg1).Item(1).Column
ligneFin1 = Range(plg1).Rows.Count + ligneDébut1 - 1
x = 1
For Each c In Range(Cells(ligneDébut1, ColonneDébut1),
Cells(ligneFin1, ColonneDébut1))
Set Cherch = Range(Cells(ligneDébut2, ColonneDébut2), Cells(ligneFin2,
ColonneDébut2)).Find(c, LookAt:=xlWhole)
If Cherch Is Nothing Then
fl2.Range("C" & x) = c
x = x + 1
End If
Next c

Il n'y a pas d'erreur mais cela ne m'affiche aucun résultat ... J'y
travaille. J'ai du faire une erreur. Bizarre que ça fonctionne bien
sans le RefEdit pourtant.


isabelle a écrit :
bonjour Sylian,

plg = RefEdit1.Value
ligneDébut = Range(plg).Item(1).Row
ColonneDébut = Range(plg).Item(1).Column
ligneFin = Range(plg).Rows.Count + ligneDébut - 1
MsgBox Range(Cells(ligneDébut, ColonneDébut), Cells(ligneFin,
ColonneDébut)).Address

isabelle


Sylian a écrit :
Bonjour,

J'ai cette ligne qui fonctionne bien :
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Que j'aimerai remplacer par une colonne (ou une partie d'une
colonne) sélectionnée par un RefEdit.

J'ai tenté un truc comme ça :

For Each c In Range(Range(RefEdit1.Value).Row &
(Range(RefEdit1.Value).Row + Range(RefEdit1.Value).Row.Count - 1))

En considérant que ma plage à traiter soit la 1ère colonne de ma
sélection de la ligne Range(RefEdit1.Value).Row à
Range(RefEdit1.Value).Row.Count

Comment remplacer mon For Each c In Range( ????) avec mon RefEdit ?

Merci !






Avatar
Sylian
Merci beaucoup isabelle pour l'aiguillage.
voici la solution pour ceux que ça intéresseraient (Venn étant le nom de
mon userform de départ):

Dim fl1,fl2, fl3 As Worksheet
Set fl1 = Sheets(Range(Venn.RefEdit1.Value).Parent.Name)
Set fl3 = Sheets(Range(Venn.RefEdit2.Value).Parent.Name)
Set fl2 = Worksheets("Résultat")

plg1 = Venn.RefEdit1.Value
ligneDébut1 = Range(plg1).Item(1).Row
ColonneDébut1 = Range(plg1).Item(1).Column
ligneFin1 = Range(plg1).Rows.Count + ligneDébut1 - 1

plg2 = Venn.RefEdit2.Value
ligneDébut2 = Range(plg2).Item(1).Row
ColonneDébut2 = Range(plg2).Item(1).Column
ligneFin2 = Range(plg2).Rows.Count + ligneDébut2 - 1

x = 1
For Each c In Range(fl1.Cells(ligneDébut1, ColonneDébut1),
fl1.Cells(ligneFin1, ColonneDébut1))
Set Cherch = Range(fl3.Cells(ligneDébut2, ColonneDébut2),
fl3.Cells(ligneFin2, ColonneDébut2)).Find(c, LookAt:=xlWhole)
If Cherch Is Nothing Then
fl2.Range("C" & x) = c
x = x + 1
End If
Next c
Set Cherch = Nothing

(...)

Encore merci pour l'aide Isabelle. Je mettais le nom de la feuille avant
Range sans succès et finalement en le distrubuant devant chaque
Cells(...) ça fonctionne enfin ! Extra !

Sylian


isabelle a écrit :
bonjour Sylian,

il faudrait ajouter la feuille
For Each c In Sheets("LaFeuille").Range("E1:E" &
Sheets("LaFeuille").[E65536].End(xlUp).Row)

isabelle


Sylian a écrit :
Merci beaucoup pour l'astuce Isabelle.
Ma macro d'origine qui était :

x = 1
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Set Cherch = Range("F1:F" & [F65536].End(xlUp).Row).Find(c,
LookAt:=xlWhole)
If Cherch Is Nothing Then
fl2.Range("C" & x) = c
x = x + 1
End If
Next c

Devient à présent :

plg1 = Venn.RefEdit1.Value
ligneDébut1 = Range(plg1).Item(1).Row
ColonneDébut1 = Range(plg1).Item(1).Column
ligneFin1 = Range(plg1).Rows.Count + ligneDébut1 - 1
x = 1
For Each c In Range(Cells(ligneDébut1, ColonneDébut1),
Cells(ligneFin1, ColonneDébut1))
Set Cherch = Range(Cells(ligneDébut2, ColonneDébut2), Cells(ligneFin2,
ColonneDébut2)).Find(c, LookAt:=xlWhole)
If Cherch Is Nothing Then
fl2.Range("C" & x) = c
x = x + 1
End If
Next c

Il n'y a pas d'erreur mais cela ne m'affiche aucun résultat ... J'y
travaille. J'ai du faire une erreur. Bizarre que ça fonctionne bien
sans le RefEdit pourtant.


isabelle a écrit :
bonjour Sylian,

plg = RefEdit1.Value
ligneDébut = Range(plg).Item(1).Row
ColonneDébut = Range(plg).Item(1).Column
ligneFin = Range(plg).Rows.Count + ligneDébut - 1
MsgBox Range(Cells(ligneDébut, ColonneDébut), Cells(ligneFin,
ColonneDébut)).Address

isabelle


Sylian a écrit :
Bonjour,

J'ai cette ligne qui fonctionne bien :
For Each c In Range("E1:E" & [E65536].End(xlUp).Row)
Que j'aimerai remplacer par une colonne (ou une partie d'une
colonne) sélectionnée par un RefEdit.

J'ai tenté un truc comme ça :

For Each c In Range(Range(RefEdit1.Value).Row &
(Range(RefEdit1.Value).Row + Range(RefEdit1.Value).Row.Count - 1))

En considérant que ma plage à traiter soit la 1ère colonne de ma
sélection de la ligne Range(RefEdit1.Value).Row à
Range(RefEdit1.Value).Row.Count

Comment remplacer mon For Each c In Range( ????) avec mon RefEdit ?

Merci !