OVH Cloud OVH Cloud

Coller

6 réponses
Avatar
Denys
Bonjour à tous...

Dans la macro qui suit, Excel ne veut absolument pas coller les données
copiées...
Sauriez-vous pourquoi??? D'habitude ça fonctionne !!!! Il me semble..

Sub ChercherInfoFeuillePrécédente()
With ActiveSheet
If [T1] <> "" Then Exit Sub
End With
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index - 1).Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + 1).Select
Range("T1").Select
Activesheet.Paste ' Ici Excel ne veut rien savoir......
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
Range("S1").Select
Activesheet.Paste
Range("U1").Select
End Sub


Merci beaucoup...

Denys

6 réponses

Avatar
Pounet95
Bonsoir,
En regardant le code, je me fais la réflexion que copier la plage A1:A65536
(si feuille vide ) à partir de T1 sur la feuille suivante, ça doit 'faire
gueuler Excel',
mais je n'en suis même pas sûr .
Aussi, en mettant un On Error Resume Next au début de la procédure
avant le With peut cacher le problème ? A vérifier....
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

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

Bonjour à tous...

Dans la macro qui suit, Excel ne veut absolument pas coller les données
copiées...
Sauriez-vous pourquoi??? D'habitude ça fonctionne !!!! Il me semble..

Sub ChercherInfoFeuillePrécédente()
With ActiveSheet
If [T1] <> "" Then Exit Sub
End With
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index - 1).Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + 1).Select
Range("T1").Select
Activesheet.Paste ' Ici Excel ne veut rien savoir......
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
Range("S1").Select
Activesheet.Paste
Range("U1").Select
End Sub


Merci beaucoup...

Denys



Avatar
Denys
Bonsoir Pounet,

Tu sais je ne copie que la plage "occupée" de la colonne A.... Si tu
regardes les instructions. Ca représente environ 4500 lignes.....

Et c'est curieux parce que des fois l'instruction fonctionne, des fois
pas.... Quand je la fais au pas à pas, elle fonctionne.... Sur le bouton de
commande, des fois elle fonctionne, des fois pas.... Me rappelle ma vieille
bagnole !!!!

Salut

Denys


Bonsoir,
En regardant le code, je me fais la réflexion que copier la plage A1:A65536
(si feuille vide ) à partir de T1 sur la feuille suivante, ça doit 'faire
gueuler Excel',
mais je n'en suis même pas sûr .
Aussi, en mettant un On Error Resume Next au début de la procédure
avant le With peut cacher le problème ? A vérifier....
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

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

Bonjour à tous...

Dans la macro qui suit, Excel ne veut absolument pas coller les données
copiées...
Sauriez-vous pourquoi??? D'habitude ça fonctionne !!!! Il me semble..

Sub ChercherInfoFeuillePrécédente()
With ActiveSheet
If [T1] <> "" Then Exit Sub
End With
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index - 1).Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + 1).Select
Range("T1").Select
Activesheet.Paste ' Ici Excel ne veut rien savoir......
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
Range("S1").Select
Activesheet.Paste
Range("U1").Select
End Sub


Merci beaucoup...

Denys







Avatar
Pounet95
Bonjour,
J'avais précisé <<si feuille vide>>, mais pas grave.;o))
Sinon, est-ce que tu as quand même inséré l'instruction en début de
procédure ?
Autre chose, la feuille de départ a-t-elle toujours un index supérieur ou
égal à 2 ?
Car si elle est la première (index =1) et que tu sélectionne la feuille
index-1 il doit y avoir problème
et comme l'instruction On error n'est pas présente, ce ne doit pas
fonctionner.
A part cela, je n'ai pas d'autre idée

Bonne journée

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

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

Bonsoir Pounet,

Tu sais je ne copie que la plage "occupée" de la colonne A.... Si tu
regardes les instructions. Ca représente environ 4500 lignes.....

Et c'est curieux parce que des fois l'instruction fonctionne, des fois
pas.... Quand je la fais au pas à pas, elle fonctionne.... Sur le bouton
de
commande, des fois elle fonctionne, des fois pas.... Me rappelle ma
vieille
bagnole !!!!

Salut

Denys


Bonsoir,
En regardant le code, je me fais la réflexion que copier la plage
A1:A65536
(si feuille vide ) à partir de T1 sur la feuille suivante, ça doit 'faire
gueuler Excel',
mais je n'en suis même pas sûr .
Aussi, en mettant un On Error Resume Next au début de la procédure
avant le With peut cacher le problème ? A vérifier....
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/

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

Bonjour à tous...

Dans la macro qui suit, Excel ne veut absolument pas coller les données
copiées...
Sauriez-vous pourquoi??? D'habitude ça fonctionne !!!! Il me semble..

Sub ChercherInfoFeuillePrécédente()
With ActiveSheet
If [T1] <> "" Then Exit Sub
End With
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index - 1).Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + 1).Select
Range("T1").Select
Activesheet.Paste ' Ici Excel ne veut rien savoir......
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
Range("S1").Select
Activesheet.Paste
Range("U1").Select
End Sub


Merci beaucoup...

Denys









Avatar
Cecile DEBEAUVAIS
que veut-tu dire par "Excel ne veut rien savoir "? Ca se plante ( donc tu
connais le N° de la liigne où ca se plante ?) ou bien ca ne se plante pas
et ca ne fait pas ce que tu demandes ?

A+

a écrit dans le message de news:

Bonjour à tous...

Dans la macro qui suit, Excel ne veut absolument pas coller les données
copiées...
Sauriez-vous pourquoi??? D'habitude ça fonctionne !!!! Il me semble..

Sub ChercherInfoFeuillePrécédente()
With ActiveSheet
If [T1] <> "" Then Exit Sub
End With
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index - 1).Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + 1).Select
Range("T1").Select
Activesheet.Paste ' Ici Excel ne veut rien savoir......
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
Range("S1").Select
Activesheet.Paste
Range("U1").Select
End Sub


Merci beaucoup...

Denys



Avatar
anomymousA
bonjour, denys

J'ai fait tourner ta procédure avec une boucle 1000 fois de suite et rien ne
s'est planté. Par ailleurs, comme je n'avais pas mis
d'application.screenupdatingúlse, j'ai peu suivre le déroulment et je peux
t'assurer que ca fonctionne.
Au mieux ce que je peux te conseille est de mettre à l'issue de ta copie un
Application.cutcopymodeúlse ce qui entraine sommairement un vidage de la
mémoire réservée à la plage à copier.
Tu as peut-être un problème de mémoire limite quoique j'y crois moyennement.
Enfin, en dehors de ça ne cherche pas du côté de ta procédure elle même qui
fonctionne bien que son écriture puisse etre aménagée p.e comme suit

Sub ChercherInfoFeuillePrécédente()

Dim lastrow(1 To 2) As Long

If ActiveSheet.Range("T1").Value <> "" Then Exit Sub

Set wssource = ThisWorkbook.Worksheets(ActiveSheet.Index - 1)
Set wsdest = ThisWorkbook.Worksheets(ActiveSheet.Index)

'définition de la dernière ligne des feuilles de source et de copie
colonne A

For I = 1 To 2
lastrow(I) = ThisWorkbook.Worksheets(ActiveSheet.Index + I -
1).Range("A1").End(xlDown).Row
Next

With wssource
.Activate
Set plageacopiersource = .Range(Cells(1, 1), Cells(lastrow(1), 1))
End With

With wsdest
.Activate
Set plageacopierdest = .Range(Cells(1, 1), Cells(lastrow(2), 1))
End With

'opérations de copie

plageacopiersource.Copy wsdest.Range("T1")

plageacopierdest.Copy wsdest.Range("S1")

End Sub

Par ailleurs et comme le dit Pounet95, il conviendrait de gérer le fait que
la feuille active pet être la 1ere feuille et donc génerer une erruer car
l'indice 0 n'appartient pas à la collection des feuilles.
Enfin, moi c'est ce que j'en dis .

A+


Bonjour à tous...

Dans la macro qui suit, Excel ne veut absolument pas coller les données
copiées...
Sauriez-vous pourquoi??? D'habitude ça fonctionne !!!! Il me semble..

Sub ChercherInfoFeuillePrécédente()
With ActiveSheet
If [T1] <> "" Then Exit Sub
End With
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index - 1).Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + 1).Select
Range("T1").Select
Activesheet.Paste ' Ici Excel ne veut rien savoir......
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
Range("S1").Select
Activesheet.Paste
Range("U1").Select
End Sub


Merci beaucoup...

Denys



Avatar
Denys
Bonjour à tous,

Merci beaucoup de vous être penchés sur la question. Pounet, effectivement,
je commançais sur la seconde feuille. D'après l'aide de VB, il arrive parfois
qu'Excel refuse de coller des données prises dans une autre feuille si la
colonne de destination est vide !!! (En tout cas, c'est comme ça que j'ai
compris la traduction).
J'ai donc inséré une instruction de mettre les mots Nos de compte avant
d'exécuter cette macro en T1, et depuis, je n'ai aucun problème !!!!

C'est étonnant, mais il est vrai que la 2e instruction de activesheet.paste
elle n'a jamais planté !!!!

En résumé, je ne comprends pas vraiment pourquoi mais enfin, le résultat est
que tout va bien maintenant...

Encore une fois, merci à vous tous....

Denys


Bonjour à tous...

Dans la macro qui suit, Excel ne veut absolument pas coller les données
copiées...
Sauriez-vous pourquoi??? D'habitude ça fonctionne !!!! Il me semble..

Sub ChercherInfoFeuillePrécédente()
With ActiveSheet
If [T1] <> "" Then Exit Sub
End With
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index - 1).Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
ThisWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Index + 1).Select
Range("T1").Select
Activesheet.Paste ' Ici Excel ne veut rien savoir......
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Copy
Range("S1").Select
Activesheet.Paste
Range("U1").Select
End Sub


Merci beaucoup...

Denys