Pour thautheme

DD4477 -  
Patrice33740 Messages postés 8400 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.

7 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour

    Probablement avec UsedRange !
    0
  2. DD4477
     
    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
    0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Re,

    Simplement :
    Option Explicit
    Public Sub TRANSFO()
      Worksheets("Feuil1").UsedRange.Copy
      Worksheets("Feuil3").[A1].PasteSpecial xlPasteAll, , , True
      Application.CutCopyMode = False
    End Sub
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. dd4477
     
    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 ?
    0
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    0
  7. dd4477
     
    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.
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Ces informations proviennent de l'aide VBA (la touche F1). Edit :F1 fonctionne aussi avec Excel et avec pratiquement tous les programmes.

      N/A n'est pas a proprement dit une erreur mais une réponse de la recherche pour dire "je n'ai pas trouvé"
      0