probleme avec transposition

  • Initiateur de la discussion Initiateur de la discussion marie49
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

marie49

XLDnaute Occasionnel
Bonjour,

Voici un petit problème de transposition dans un copier/coller
Jusque là ma transposition marchait très bien entre deux fichiers.
Les modifications que j'ai fait depuis est d'ajouter un mot de passe à un seul fichier et d'ajouter 'option explicit'.
Evidemment, j'ai pensé à enlever et remettre le mot de passe.


Voici une partie du code que j'ai utilisé :
Windows("FicBase.xls").Activate
Nbrcol = Sheets(1).Cells(7, 256).End(xlToLeft).Column
Nbrlig = Sheets(1).Cells(65536, "F").End(xlUp).Row
Sheets(1).Range("A2", Cells(Nbrlig, Nbrcol)).Select
Selection.Copy

Windows("FicResu.xls").Activate
Sheets(1).Activate
ActiveSheet.Unprotect Password:="toto"


Cells(1, 9).Select
Selection.MergeCells = False 'j'avais des cellules fusionnés
Cells(1, 9).Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

Cette partie de code a fonctionné plus d'une centaine de fois et maintenant il bloque sur le PasteSpecial. Il me met que la zone du coller doit être identique à la zone du copier.

Qui a une idée sur ce problème? Faut-il que je copie/colle mes cellules une par une sans transposition?

Merci de vos réponses
Marie
 
Dernière édition:
Re : probleme avec transposition

bonjour Marie
essaye comme suit,pas testé
Windows("FicBase.xls").Activate
Nbrcol = Sheets(1).Cells(7, 256).End(xlToLeft).Column
Nbrlig = Sheets(1).Cells(65536, "F").End(xlUp).Row
Sheets(1).Range("A2", Cells(Nbrlig, Nbrcol)).Copy

Windows("FicResu.xls").Activate
Sheets(1).Activate
ActiveSheet.Unprotect Password:="toto"
'toutes les cellules de la feuille
ActiveSheet.Cells.MergeCells = False 'j'avais des cellules fusionnés

ActiveSheet.Cells(1, 9).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
à bientôt
 
Re : probleme avec transposition

Bonjour Marie,

Un tel message peut se produire en effet s'il y a d'autres cellules fusionnées...

Mais votre code ne peut pas fonctionner ainsi. En effet entre le copier et le coller il ne doit pas y avoir d'opérations telles que la "déprotection" de la feuille ou le "défusionnement" de cellules.

Il faudrait donc écrire :

Code:
With Workbooks("FicResu.xls").Sheets(1)
.Unprotect Password:="toto"
.Cells(1, 9).MergeCells = False
End With

Sheets(1).Activate [COLOR="Red"]'[B]Edit[/B] : ajouté cette ligne...[/COLOR]
Range("A2", Cells(Nbrlig, Nbrcol)).Select
Selection.Copy

Workbooks("FicResu.xls").Activate
Sheets(1).Activate
Cells(1, 9).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

Mais il faut savoir que sur VBA il est presque toujours inutile de sélectionner des feuilles ou des cellules. Voyez le code suivant :

Code:
With Workbooks("FicResu.xls").Sheets(1)

.Unprotect Password:="toto"
.Cells(1, 9).MergeCells = False

Sheets(1).Range("A2", [COLOR="Red"]Sheets(1).[/COLOR]Cells(Nbrlig, Nbrcol)).Copy

.Cells(1, 9).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

.Protect Password:="toto"

End With

Bon courage et A+
 
Dernière édition:
Re : probleme avec transposition

Merci beaucoup de vos deux réponses...

En effet ça fonctionne mieux avec ta deuxième proposition job75

En fait, j'ai des cellules fusionnées sur les 6 premières lignes. Donc, si je suis bien le raisonnement, il faut que j'enlève la fusion sur ces 6 lignes et non que sur la première???

Sinon, je risque d'avoir à nouveau ce problème de copier/coller??

Merci encore au forum
A chaque fois, il me dépanne bien
Marie
 
Re : probleme avec transposition

Re,

En fait, j'ai des cellules fusionnées sur les 6 premières lignes. Donc, si je suis bien le raisonnement, il faut que j'enlève la fusion sur ces 6 lignes et non que sur la première???

Sinon, je risque d'avoir à nouveau ce problème de copier/coller??

A vous de voir Marie, mais je crains qu'il faille "défusionner" toutes les cellules en effet.

Notez aussi Marie que j'ai fait un Edit sur mon post précédent (en rouge dans le code).

A+
 
Re : probleme avec transposition

Merci, je n'avais pas vu...J'ai fait la modif...

Pour mes cellules fusionnées, j'ai ajouté ca :
For i = 1 To 6
.Cells(i, Sheets(1).Cells(i, 256).End(xlToLeft).Column).MergeCells = False
Next i

Tout marche pour l'instant.

Mais je commence à me dire que VBA est quand même capricieux. Un coup, il veut bien, un coup il bug...

C'est tout un art de programmer avec...

Merci
Marie
 
Re : probleme avec transposition

Re Marie,

Pas de "caprices" de VBA si l'on s'en sert correctement...

Quant à votre dernier code (je vois que vous utilisez mon 2ème code) il est quand même plus simple 😉 d'écrire, sans oublier le point :

Code:
.Rows("1:6").MergeCells = False

A+
 
Re : probleme avec transposition

Merci, c'est vrai🙂

Mais je vais modifier mon code pour qu'il supprime les cellules fusionnées sur les 6 lignes mais à partir de la colonne 9. car j'ai des cellules fusionnées avant la colonne 9 et je veux les garder telles quelles.

For i = 1 To 6
For j=9 To .Cells(i, 256).End(xlToLeft).Column)
.Cells(i, j)).MergeCells = False
Next j
Next i

Un truc comme ça, je vais tester en récupérant un entier pour Column

Merci
Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
1 K
Réponses
5
Affichages
590
Réponses
9
Affichages
957
Retour