Pour thautheme
DD4477
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je ne veux pas abuser mais comme je n'arrive pas à généraliser un bout de code, j'aimerais si possible que vous m'apportiez votre aide :
Range("1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,11:11,12:12,13:13,14:14,15:15,16:16").Select
Range("A16").Activate
ceci permet de selectionner une partie active d'une feuille de calcul.
Or, cette petie active est variable en fonction du contenu de cette feuille.
Serait-il possible de faire une boucle genre While "cellule non vide", la prendre en compte dans la selection sachant qu'il faut tenir compte et du nombre de lignes et colonnes non vides donc a priori deux while imbriquees du genre :
se mettre en cellule A1, si celle-ci n'est pas vide, prendre son contenu dans la selection finale
se decaler d'une ligne vers le bas
si cellule vide se decaler d'une colonne etc...
Le but est de faire une transposée du contenu de la feuille 1 sur la feuille 3
J'ai essayé de selectionner toutes les cellules mais c'est trop pour VBA
Merci de votre aide.
Je ne veux pas abuser mais comme je n'arrive pas à généraliser un bout de code, j'aimerais si possible que vous m'apportiez votre aide :
Range("1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,10:10,11:11,12:12,13:13,14:14,15:15,16:16").Select
Range("A16").Activate
ceci permet de selectionner une partie active d'une feuille de calcul.
Or, cette petie active est variable en fonction du contenu de cette feuille.
Serait-il possible de faire une boucle genre While "cellule non vide", la prendre en compte dans la selection sachant qu'il faut tenir compte et du nombre de lignes et colonnes non vides donc a priori deux while imbriquees du genre :
se mettre en cellule A1, si celle-ci n'est pas vide, prendre son contenu dans la selection finale
se decaler d'une ligne vers le bas
si cellule vide se decaler d'une colonne etc...
Le but est de faire une transposée du contenu de la feuille 1 sur la feuille 3
J'ai essayé de selectionner toutes les cellules mais c'est trop pour VBA
Merci de votre aide.
7 réponses
Ah bon? https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.usedrange?redirectedfrom=MSDN
UsedRange, copier la plage et coller spécial (transposée) en feuille 3. Utilise l'enregistreur de macro pour obtenir la syntaxe.
UsedRange, copier la plage et coller spécial (transposée) en feuille 3. Utilise l'enregistreur de macro pour obtenir la syntaxe.
J'ai essayé mais c'est pas encore ca :
Sub TRANSFO()
'
' TRANSFO Macro
'
'
'Worksheets("Sheet1").Activate
ActiveSheet.UsedRange.Select
Application.Run "'traitement automatique générique.xlsm'!transposée"
Application.CutCopyMode = False
Application.Run "'traitement automatique générique.xlsm'!Feuil3.DelLigne"
End Sub
Sub transposée()
'
' transposée Macro
'
'
'Sheets("Feuil1").Select
'ActiveWindow.LargeScroll ToRight:=-4
Selection.Copy
Sheets("Feuil3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
Sub TRANSFO()
'
' TRANSFO Macro
'
'
'Worksheets("Sheet1").Activate
ActiveSheet.UsedRange.Select
Application.Run "'traitement automatique générique.xlsm'!transposée"
Application.CutCopyMode = False
Application.Run "'traitement automatique générique.xlsm'!Feuil3.DelLigne"
End Sub
Sub transposée()
'
' transposée Macro
'
'
'Sheets("Feuil1").Select
'ActiveWindow.LargeScroll ToRight:=-4
Selection.Copy
Sheets("Feuil3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
Re,
Simplement :
Simplement :
Option Explicit Public Sub TRANSFO() Worksheets("Feuil1").UsedRange.Copy Worksheets("Feuil3").[A1].PasteSpecial xlPasteAll, , , True Application.CutCopyMode = False End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Un grand merci à tous :
j'avais pensé selectionner toute la feuille 1 et faire une copie mais il refusait le trop grand nombre de colonnes et lignes
je me suis inspiré de ton code pour écrire cela qui n'est pas tres different :
Worksheets("Feuil1").UsedRange.Copy
Sheets("Feuil3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ce qui permet en effet de selectionner toutes les donnees à la souris avant de proceder à la transposee.
Si je peux me permettre de te poser un autre question au sujet de ton code:
A quoi cela sert il de preceder le sub <fonction> par public et aussi par option explicit ?
j'avais pensé selectionner toute la feuille 1 et faire une copie mais il refusait le trop grand nombre de colonnes et lignes
je me suis inspiré de ton code pour écrire cela qui n'est pas tres different :
Worksheets("Feuil1").UsedRange.Copy
Sheets("Feuil3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
ce qui permet en effet de selectionner toutes les donnees à la souris avant de proceder à la transposee.
Si je peux me permettre de te poser un autre question au sujet de ton code:
A quoi cela sert il de preceder le sub <fonction> par public et aussi par option explicit ?
Bonjour,
Public défini la portée du code contenu dans un module : il est visible de l'ensemble des projets ouverts et donc utilisable depuis tous leurs modules. On peut limiter cette portée aux modules du projet qui contient le code, et donc interdire son emploi depuis les autres projets ouverts, en ajoutant Option Private Module au début du module concerné.
Option Explicit, toujours placé en début de module, rend obligatoire la déclaration de toutes les variables utilisées dans ce module. Lorsque cette instruction est omise, les variables sont déclarées de manière implicite lors de leur première utilisation, cela réserve souvent des surprises lors de l'exécution du code, notamment des erreurs du genre "Incompatibilité de type". Toujours commencer tous ses modules par Option Explicit est une excellente méthode qui évite ces problèmes et rend le code plus compréhensible.
La touche F1 : en utilisant l'éditeur visual basic, lorsqu'on place le curseur texte sur un mot dans le code , permet d'obtenir l'aide sur ce mot. Assez complet, cet aide t'aurais donné les renseignements demandés !
Cordialement
Patrice
Public défini la portée du code contenu dans un module : il est visible de l'ensemble des projets ouverts et donc utilisable depuis tous leurs modules. On peut limiter cette portée aux modules du projet qui contient le code, et donc interdire son emploi depuis les autres projets ouverts, en ajoutant Option Private Module au début du module concerné.
Option Explicit, toujours placé en début de module, rend obligatoire la déclaration de toutes les variables utilisées dans ce module. Lorsque cette instruction est omise, les variables sont déclarées de manière implicite lors de leur première utilisation, cela réserve souvent des surprises lors de l'exécution du code, notamment des erreurs du genre "Incompatibilité de type". Toujours commencer tous ses modules par Option Explicit est une excellente méthode qui évite ces problèmes et rend le code plus compréhensible.
La touche F1 : en utilisant l'éditeur visual basic, lorsqu'on place le curseur texte sur un mot dans le code , permet d'obtenir l'aide sur ce mot. Assez complet, cet aide t'aurais donné les renseignements demandés !
Cordialement
Patrice
Merci beaucoup, si ces infos viennent d'un manuel, puis-je en avoir les références ? je reconnais tout à fait mes erreurs mais apprends vite et bien !
Certaines fonctions Excel donnent des résultats erronés comme RECHERCHEV
et je pense qu'en ayant le bon manuel, je saurais trouver l'origine de l'erreur, je suis allé sur le forum Microsoft mais en appliquant à la lettre j'ai le fameux N/A alors que la valeur recherchee dans deux tableaux differents sont identiques et de meme format. Evidemment, en specifiant le parametre VRAI, j'ai une valeur de retour non voulue. Pour essayer de comprendre le resultat obtenu, j'ai changé le numero de colonne mais c'est completement à proximatif là où je n'attends qu'une seule valeur.
Merci et bonne journée.
Certaines fonctions Excel donnent des résultats erronés comme RECHERCHEV
et je pense qu'en ayant le bon manuel, je saurais trouver l'origine de l'erreur, je suis allé sur le forum Microsoft mais en appliquant à la lettre j'ai le fameux N/A alors que la valeur recherchee dans deux tableaux differents sont identiques et de meme format. Evidemment, en specifiant le parametre VRAI, j'ai une valeur de retour non voulue. Pour essayer de comprendre le resultat obtenu, j'ai changé le numero de colonne mais c'est completement à proximatif là où je n'attends qu'une seule valeur.
Merci et bonne journée.