Bonjour,
J'ai beaucoup appris de cette macro, merci beaucoup.
J'ai adapté le code que tu m'a donnée pour le faire fonctionné en ligne. (avec le pdf"Andrew5")
Code : Tout sélectionner
function ForumConcatL(ExoPlage, ExoNb) as string
dim ExoLig as integer, ExoCol as integer, ExoTrav
'Une plage de plus d'une cellule passée en paramètre est un "tableau"
'On teste que le premier parametre est une plage ou une cellule seule
if isarray(ExoPlage) then
' On boucle pour concatener les cellules
' on arrete quand le nombre passe en deuxieme parametre est atteint
' on arrete aussi si ce nombre est trop grand (> au nb total de cellules)
for ExoCol=lBound(ExoPlage,2) to iif(ExoNb > uBound(ExoPlage,2),uBound(ExoPlage,2), ExoNb)
for ExoLig=lBound(ExoPlage,1) to uBound(ExoPlage,1)
ExoTrav=ExoTrav & ExoPlage(1,ExoCol)
next ExoLig
next ExoCol
ForumConcatL = ExoTrav
else
' Si cellule seule retourne la cellule
ForumConcatL = ExoPlage
end if
end function
Malgré cela j'ai un doute sur la condition iff , car ExoNb correspond à un nombre de cellule et uBound(ExoPlage,2) au numéro de colonne.
Il ne serait pas plus correcte d'écrire:
Code : Tout sélectionner
iif(ExoNb > (uBound(ExoPlage,2)-lBound(ExoPlage,2)),uBound(ExoPlage,2), lBound(ExoPlage,2)+ExoNb)
Sinon pourquoi y-a-t-il un message d'erreur lorsqu'on revient dans la plage définie :
ForumConcatC(A1:A6;B1)
B1=2 (ça marche)
B1=7 (ça marche)
B1=2 message d'erreur.
Mise à part ça(question de curiosité), le problème est résolu.
Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.