Formula R1C1 et plage fusionnée

Bonjour à tous, bonjour le forum,

J'ai un tableau avec l'année en première ligne et la lettre de contrat en deuxième ligne. Je devrais pouvoir concatener les cellules de la ligne 2 avec leur date correspondante qui est à la ligne supérieure. Concrètement si j'ai "J" en B2 et "2021" en B1 le code devrait me donner "J2021". J'ai écrit un code qui fonctionne mais le problème est qu'il ne prend pas en compte que l'année est fusionnée au dessus des lettres correspondantes. Autrement dit il me donne bien J2021 mais pour les mois suivant il ne prend plus en compte la plage fusionnée donc il ne ressort plus que les lettres seules. Je joins une capture d'écran si cela vous permet d'avoir un meilleur visuel.

Veuillez également trouver mon code ci-dessous :

Sub MacroConcat()
Range("B6").Select
Range("B6", Cells(6, Cells(2, Columns.Count).End(xlToLeft).Column)).FormulaR1C1 = "=IF(R[-4]C<>0,R[-4]C&R[-5]C,"""")"
End Sub

capture d ecran 2020 12 06 a 12 38 17

Bonjour

Je joins une capture d'écran...

Tu devrais plutôt joindre ton fichier ...

Bye !

Bonjour,

Pourquoi fusionner ?

  1. tu peux alléger la lecture en utilisant une MFC
  2. Ou alors rechercher la valeur en utilisant
=INDIRECT(ADRESSE(1;SOMMEPROD(MAX((COLONNE($B$1:B1))*($B$1:B1<>"")))))

edit : bonjour gmb, un fichier serait en effet nécessaire !

Bonjour Gmb et Steelson,

Merci beaucoup pour votre retour. Veuillez s'il vous plait trouver ci-joint le fichier en question. Dans l'idée la formule R1C1 est la seule solution que j'ai trouvée pour sélectionner la date située au dessus de chaque lettre mais si il existe une meilleure solution je suis bien sûr preneur.

La contrainte est que le code devrait fonctionner si des lettres sont ajoutées en ligne 2 et si des années sont ajoutées en ligne 1. Ici dans ce fichier le code devrait sortir en ligne 6 : J2021, H2021, K2021...X2022.

Bonjour,

Avec si peu d'explication, difficile de comprendre le pourquoi !

Ceci ressemble à un tableau de données, je ferais l'inverse (sans macro) :

comme propos ci-dessus,

=B2&INDIRECT(ADRESSE(1;SOMMEPROD(MAX((COLONNE($B$1:B1))*($B$1:B1<>"")))))

sans macro

Bonjour

Bonjour à tous

Autres propositions macro

Bye !

Hello tout le monde,

Merci beaucoup pour vos réponses et votre temps. Grâce à vos réponses j'ai un code qui fonctionne. Je l'ai adapté de façon à ce qu'il fonctionne si de nouvelles colonnes s'ajoutaient avec une (ou plusieurs) nouvelle(s) année(s). Les cellules semblent bien concaténées au format LettreAnnée.

Excellente journée à vous tous

Sub MacroEurope()

Range("B7").Select
Range("B7", Cells(7, Cells(2, Columns.Count).End(xlToLeft).Column)).FormulaR1C1 = "=R[-5]C&INDIRECT(ADDRESS(1,SUMPRODUCT(MAX((COLUMN(R1C2:R[-6]C))*(R1C2:R[-6]C<>"""")))))"

End Sub

Pourquoi une macro ?

N'oublie pas de clore la discussion en cliquant sur

Parce qu'il s'agit d'une petite partie d'un gros projet d'automatisation. Le tableau évoluera dans le temps (plus ou moins de contrats/dates)... Mais le principe est le même j'ai juste réutilisé cette formule de façon à ce qu'elle s'étende aux dernières colonnes à chaque fois que les nouvelles données seront importées.

Un grand merci !!

Rechercher des sujets similaires à "formula r1c1 plage fusionnee"