Famille de feuilles de calcul Microsoft avec des outils pour l’analyse, le graphique et la communication des données.
Voici une macro de ton classeur, je n'ai pas le temps de passer en revue toutes les procédures de la dizaine de modules du classeur, je me contenterai de cet exemple :
Lorsque tu utilises une expression générique comme "Selection" dans la ligne de code suivante de ta procédure : Selection.Copy dest , Selection peut représenter une cellule ou une colonne complète ou tout autre objet de sélectionner dans la feuille affichée à l'écran.
Pour les besoins de l'exercice, supposons que la "Selection" représente une colonne complète de la feuille active que tu veux copier dans une autre feuille à partir de la première ligne disponible dans une autre feuille, la copie est "impossible" car la plage que représente la sélection est plus grande que l'espace disponible dans la colonne de la feuille de destination.
Exemple : Essaie de copier la colonne A:A (Selection) dans une autre feuille à partir de la ligne B200 (dest) d'une autre feuille. Comme B200:Bx (x = dernière ligne de la feuille) a moins de lignes que la colonne complète A:A. Comment Excel peut faire pour y arriver ? L'expression "Selection" est très utile à l'enregistreur macro, mais dans la mesure du possible, il est préférable de définir autrement la plage de cellules sur laquelle on veut travailler en utilisant un objet "Range" comme tu fais pour les autres variables "Workbook" et "Worksheet".
J'espère que cela t'aidera...Je ne peux pas tester cette procédure en particulier, car elle fait référence à des classeurs que je n'ai pas. Ça demande juste un peu de patience afin de déterminer la procédure problématique !
'---------------------------------------------
Sub selectionsava()
Dim co As Workbook 'déclare la variable co (Classeur Origine)
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim oo As Worksheet 'déclare la variable oo (Onglet Origine)
Dim oc As Worksheet 'déclare la variable oc (Onglet Cible)
Dim dest As Range 'déclare la variable dest (DESTination)
Set co = Workbooks("Devis.xlsm") 'définit la variable co
Set cc = Workbooks("Sava") 'définit la variable cc
Set oo = co.Sheets("Feuil1Devis") 'définit la variable oo
Set oc = cc.Sheets("Feuil1Sava") 'définit la variable oc
With cc 'prend en compte le classeur "Sava.xlsx"
Set dest = oc.Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
End With 'fin de la prise en compte du classeur "Sava.xlsx"
co.Activate
oo.Activate
Selection.Copy dest 'copie et colle les données
End Sub
'---------------------------------------------