Copier une liste concaténée

Bonjour,

Je rencontre un problème avec des données concaténées!

Je concatène le nom et la 1ère lettre du prénom.

=CONCATENER(A3;" ";STXT(B3;1;1)&".")

Jusque là pas de problème!

Je veux copier cette liste du classeur A vers le classeur B colonne A

Sub Macro2()

Workbooks.Open Filename:="H:\criterium 2017\Criterium-phase 2.xlsm" '

Sheets("Joueurs").Range("O3:O53").Copy ThisWorkbook.ActiveSheet.Range("A30")

ActiveWorkbook.Close False

End Sub

Et là il me met à chaque fois #REF

Je ne vois pas pourquoi!

Merci d'avance

Bonjour,

Bonjour,

Quand tu ouvres un classeur, il devient automatiquement le classeur actif...

Il ne peut y avoir qu'un classeur actif, et qu'une feuille active, et elle est forcément dans le classeur actif...

Cordialement.

Ce que je ne comprend pas c'est que cette macro fonctionne bien et dans dans le même classeur!

J'ai juste adapté les cellules!

Ce que je soupçonne c'est que dans le classeur A, la concaténation se fait par VBA alors que moi je le fais avec Concatener!

Est-ce que cela peut jouer? Et si cela joue comment contourner ce problème?

C'est ThisWorkbook.ActiveSheet qui ne va pas !

C'est une instruction fausse !

ThisWorkbook renvoie un classeur. ActiveSheet est une propriété de l'objet Application ! Elle n'est pas propriété de l'objet Workbook ! Donc erreur !

Et par ailleurs la feuille active ne peut être que dans le classeur actif !

La ligne qui précède ouvre un classeur, qui est donc devenu le classeur actif !

La chose n'ayant pu être modifée à la ligne suivante, la feuille active se trouve dans le classeur qui vient d'être ouvert !

Alors peux-t-on m'expliquer pourquoi cette cette macro fonctionne très bien:

Sub Macro2()

Workbooks.Open Filename:="H:\criterium 2017\Criterium-phase 2.xlsm" '

Sheets("Points").Range("A2:C60").Copy ThisWorkbook.ActiveSheet.Range("Q4")

ActiveWorkbook.Close False

End Sub

qui copie une plage de cellules dans la feuille "Points" du Classeur Criterium-Phase2.xlsm (disons classeur A) dans le classeur B sans problème. La macro se trouve dans le classeur B.

Et ici je ne change que la feuille et les cellules et boum cela ne va plus?

Sub Macro2()

Workbooks.Open Filename:="H:\criterium 2017\Criterium-phase 2.xlsm" '

Sheets("Joueurs").Range("O3:O53").Copy ThisWorkbook.ActiveSheet.Range("A30")

ActiveWorkbook.Close False

End Sub

Je rectifie, tu as raison, ActiveSheet peut également s'appliquer à un classeur, et cela devrait donc fonctionner.

Quelque chose ne convient donc plus !

Quelle est l'erreur qui survient ? numéro d'erreur et libellé ?

edit : Tu aurais de toute façon intérêt à rédiger autrement pour éviter de ne reposer que sur des éléments actifs :

Sub Macro2()
    With Workbooks.Open("H:\criterium 2017\Criterium-phase 2.xlsm")
        .Sheets("Joueurs").Range("O3:O53").Copy ThisWorkbook.Worksheets(1).Range("A30")
        .Close False
    End With
End Sub

Si la feuille cible (surlignée) n'est pas la première, remplace par son numéro d'ordre ou son nom.

Il me retourne tous le temps: #REF! et là je ne comprend pas car je n'ai fait que de modifier la plage (ce n'est plus qu'une colonne de 50 cellules) et la colonne d'arrivée dans le classeur B où il y a la macro!!

Il me retourne tous le temps: #REF!

#REF! est une valeur d'erreur qui apparaît dans une cellule, pas une erreur d'exécution VBA ?

Tu copies des formules ?

Dans ce cas il faut voir si les formules sont copiables à l'emplacement où tu les mets !

La plage est issue d'une concaténation (voir premier post)! Quand la concaténation est faite, je ferme ce classeur après la sauvegarde puis je vais dans le classeur B et j'actionne la macro!

ALB F je concatène pour obtenir ALB F. je sauvegarde puis vais dans le classeur B où j'actionne la macro(2).

A part la formule de concaténation il n'y a aucune autre formule! Et dans les cellules de réceptions il n'y en a pas non plus!


Je viens de faire comme j'avais fait pour la 1ère macro (macro, enregistrement que j'ai modifié grâce au forum.)

Sub Macro11()

'

' Macro11 Macro

'

' Touche de raccourci du clavier: Ctrl+a

'

ChDir "H:\criterium 2017"

Workbooks.Open Filename:="H:\criterium 2017\Criterium-phase 2.xlsm"

Range("O3:O50").Select

Application.WindowState = xlNormal

Selection.Copy

ActiveWindow.Close

ActiveWindow.SmallScroll Down:=10

Range("A30").Select

ActiveSheet.Paste

End Sub

Comme cela ça marche!

Si la formule afficher une erreur, c'est qu'elle ne peut pas faire le calcul...

Si tu substitues à une macro pouvant être un peu améliorée, mais relativement correcte, une horreur de code bourré de Select et de quelques autres instructions totalement inutiles, je lâche complètement le sujet !

Rechercher des sujets similaires à "copier liste concatenee"