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

Je cherche à simplifier une macro

3 réponses
Avatar
G. L
Bonsoir à toutes et tous,

Je cherche à simplifier une macro, pour atteindre ce résultat :

Variable nommée Lt = K

La colonne DB contient qu'une seule lettre par ligne, plusieurs lignes
peuvent avoir la même lettre, je récupère toutes les valeurs de la colonne
DC de toutes les lignes ayant en DB la lettre saisie en Lt.

Exemple :

DB DC DF

A 82979x 27546h

A 55508g 55583t

A 70861f 74669z

B 30797h 50833t

B 55972b 77421a

B 20782a 87506y

B 50564u

K 27546h

K 55583t

K 74669z

K 50833t

K 77421a

K 87506y

N 74614x

Je trouve ma macro pas très élégante, bien qu'elle me permette d'obtenir le
résultat.

Je copie ligne à ligne DB et DC en DG1 & DH1 et si DG1 = Lt je le copie en
DFx .. DFx+1

J'ai essayé avec une formule (décaler / index / equiv) mais je suis encore
plus nul, ce n'est décalé c'est déc.né en tout genre, enfin juste pour
confirmer ma nullité!

Vos avis en VBA et où formules seront les bienvenus pour moi.

Merci d'avance

Cordialement

Gérard

3 réponses

Avatar
JB
Bonjour,

Lt = "K"
p = Application.Match(Lt, [DB:DB], 0)
If Not IsError(p) Then
[DC1].Offset(p - 1).Resize(Application.CountIf([DB1:DB], lt)).Copy
[DF1]
End If

Cordialement JB

On 23 avr, 21:40, "G. " <sugere~ wrote:
Bonsoir à toutes et tous,

Je cherche à simplifier une macro, pour atteindre ce résultat :

Variable nommée Lt = K

La colonne DB contient qu'une seule lettre par ligne, plusieurs lignes
peuvent avoir la même lettre, je récupère toutes les valeurs de la colonne
DC de toutes les lignes ayant en DB la lettre saisie en Lt.

Exemple :

DB DC DF

A 82979x 27546h

A 55508g 55583t

A 70861f 74669z

B 30797h 50833t

B 55972b 77421a

B 20782a 87506y

B 50564u

K 27546h

K 55583t

K 74669z

K 50833t

K 77421a

K 87506y

N 74614x

Je trouve ma macro pas très élégante, bien qu'elle me permette d'ob tenir le
résultat.

Je copie ligne à ligne DB et DC en DG1 & DH1 et si DG1 = Lt je le cop ie en
DFx .. DFx+1

J'ai essayé avec une formule (décaler / index / equiv) mais je suis e ncore
plus nul, ce n'est décalé c'est déc.né en tout genre, enfin juste pour
confirmer ma nullité!

Vos avis en VBA et où formules seront les bienvenus pour moi.

Merci d'avance

Cordialement

Gérard


Avatar
JB
Bonjour,

Lt = "K"
p = Application.Match(Lt, [DB:DB], 0)
If Not IsError(p) Then
[DC1].Offset(p - 1).Resize(Application.CountIf([DB:DB], Lt)).Copy
[DF1]
End If

http://cjoint.com/?eyhjr0e2wm

Cordialement JB

On 23 avr, 21:40, "G. " <sugere~ wrote:
Bonsoir à toutes et tous,

Je cherche à simplifier une macro, pour atteindre ce résultat :

Variable nommée Lt = K

La colonne DB contient qu'une seule lettre par ligne, plusieurs lignes
peuvent avoir la même lettre, je récupère toutes les valeurs de la colonne
DC de toutes les lignes ayant en DB la lettre saisie en Lt.

Exemple :

DB DC DF

A 82979x 27546h

A 55508g 55583t

A 70861f 74669z

B 30797h 50833t

B 55972b 77421a

B 20782a 87506y

B 50564u

K 27546h

K 55583t

K 74669z

K 50833t

K 77421a

K 87506y

N 74614x

Je trouve ma macro pas très élégante, bien qu'elle me permette d'ob tenir le
résultat.

Je copie ligne à ligne DB et DC en DG1 & DH1 et si DG1 = Lt je le cop ie en
DFx .. DFx+1

J'ai essayé avec une formule (décaler / index / equiv) mais je suis e ncore
plus nul, ce n'est décalé c'est déc.né en tout genre, enfin juste pour
confirmer ma nullité!

Vos avis en VBA et où formules seront les bienvenus pour moi.

Merci d'avance

Cordialement

Gérard


Avatar
G. L
Bonjour Jacques,

Merci d'avoir pris le temps de regarder mon problème.

C'est une simplification radicale, et qui va bcp plus vite, c'est super !

A chaque visite, et elles sont très nombreuses, je suis toujours ravi de
voir l'ingéniosité et le savoir généreusement diffusé.

Cordialement

Gérard



"JB" a écrit dans le message de news:

Bonjour,

Lt = "K"
p = Application.Match(Lt, [DB:DB], 0)
If Not IsError(p) Then
[DC1].Offset(p - 1).Resize(Application.CountIf([DB1:DB], lt)).Copy
[DF1]
End If

Cordialement JB

On 23 avr, 21:40, "G. " <sugere~ wrote:
Bonsoir à toutes et tous,

Je cherche à simplifier une macro, pour atteindre ce résultat :

Variable nommée Lt = K

La colonne DB contient qu'une seule lettre par ligne, plusieurs lignes
peuvent avoir la même lettre, je récupère toutes les valeurs de la colonne
DC de toutes les lignes ayant en DB la lettre saisie en Lt.

Exemple :

DB DC DF

A 82979x 27546h

A 55508g 55583t

A 70861f 74669z

B 30797h 50833t

B 55972b 77421a

B 20782a 87506y

B 50564u

K 27546h

K 55583t

K 74669z

K 50833t

K 77421a

K 87506y

N 74614x

Je trouve ma macro pas très élégante, bien qu'elle me permette d'obtenir
le
résultat.

Je copie ligne à ligne DB et DC en DG1 & DH1 et si DG1 = Lt je le copie en
DFx .. DFx+1

J'ai essayé avec une formule (décaler / index / equiv) mais je suis encore
plus nul, ce n'est décalé c'est déc.né en tout genre, enfin juste pour
confirmer ma nullité!

Vos avis en VBA et où formules seront les bienvenus pour moi.

Merci d'avance

Cordialement

Gérard