IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Programmer VBA pour un Copier/Coller difficile [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut Programmer VBA pour un Copier/Coller difficile
    Bonjour à toutes et à tous,

    Voilà mon problème :
    J'ai une feuille excel sur laquelle figurent 7 colonnes
    Colonne A : Matière
    Colonne B : Classe
    Colonne C : Module
    Colonne D : Groupe
    Colonne E : Diplômes
    Colonne F : Capacités
    Colonne G : Connaissances
    Dans un premier temps, j'ai crée un filtre afin de sélectionner la matière,
    Puis, ensuite, je sélectionne la classe ( 2nde, 1ère ou Term ),
    etc...
    Et lorsqu'apparaît ma sélection, je voudrais faire un copier/Coller des colonnes F et G ( capacités et connaissances ) ( seulement des lignes filtrées ).

    COMMENT FAIRE UN COPIER/COLLER LORSQUE LES LIGNES N'ONT PAS DES NUMEROS SUCCESSIFS ? ( les numéros ne se suivent malheureusement pas ).
    De plus, je souhaiterais garder la mise en forme. ( Hauteur des lignes, couleurs fond cellules et dessin sur cellules ).


    Merci d'avance.
    Cordialement.

    NOVICE72

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,

    Pour copier des données filtrées, tu peux utiliser un filtre élaboré (.AdvancedFilter) puis supprimer les colonnes inutiles

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je ne comprends ni la nécessité de filtrer, ni celle de copier/coller dans cette affaire.
    A moins que les "choses" aient été mal ou incomplètement expliquées, la constitution d'une plage "plage" et l'application de la méthode Range.Copy (où Range est la plage "plage") suffisent largement !

    Et de toutes manières : j'imagine que ton filtre a masqué certaines lignes, et tu veux copier ailleurs le contenu de deux colonnes parmi les lignes visibles.
    Tu peux alors profiter de cet état.
    Voici un exemple, où certaines lignes ont été cachées entre la ligne 1 et la ligne 10 incluses. Dans cet exemple, on copie à partir de la cellule H20 uniquement le contenu des cellules restées visibles en colonnes B et D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set plage = Range("A1:A10").SpecialCells(xlCellTypeVisible)
    Set plage = Union(plage.Offset(0, 1), plage.Offset(0, 3))
    plage.Copy Destination:=Range("H20")
    te reste quoi ? A comprendre ce mécanisme et à l'adapter (plages source et destination)

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, toujours utile : Excel et l'enregistreur de macro

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut
    Bonjour à tous et encore merci pour votre aide.

    Je vous souhaite aussi de bons voeux pour cette nouvelle année 2017. Que cette année apporte des solutions aux problèmes informatiques ou autre


    Cela fait déjà un certain temps que j'essaie d'adapter les informations que vous m'avez fourni mais je n'y suis pas arrivé.

    Par contre, j'ai réussi à obtenir un bout de programme qui fonctionne très bien pour 546 lignes exactement - ou quelques lignes en plus seulement - ( ligne 3 à ligne 548 ).
    La ligne 2 sert de légende et donc de filtre. La ligne 1 sert à positionner les boutons servant au macros.
    Remarque : Ces 546 lignes correspondent au programme de Math et Sciences pour les BAC PRO.
    Voici donc mon problème: Je souhaite ajouter environ 200 lignes ( correspondant au programme de Math et Sciences pour les CAP ). Mais, lorsque je fais ceci, la ligne " capacites= join(application.Transpose(sheets(........" se met en surbrillance jaune et une boite de dialogue apparaît dans laquelle est écrit : incompatibilité de Type ( erreur 13 ). Pouvez-vous me dire pourquoi sachant que je ne comprends pas trop le programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    Sub Inserer_capacite()
    Application.ScreenUpdating = False
    'Dim cap_range As Range
    With ActiveWorkbook.Sheets("capacités connaissances")
    'adresse = .[G65000].End(xlUp).Address
     
    .Range("G3:" & .[G65000].End(xlUp).Address).Copy
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Paste
     
    'a = Sheets(Sheets.Count).Range("A1:" & Sheets(Sheets.Count).[A65000].End(xlUp).Address)
    'b = Application.Transpose(a)
     
    capacites = Join(Application.Transpose(Sheets(Sheets.Count).Range("A1:" & Sheets(Sheets.Count).[A65000].End(xlUp).Address)), vbLf)
    Application.DisplayAlerts = False
    Sheets(Sheets.Count).Delete
    Application.DisplayAlerts = True
    End With
    'cap_tab = Application.Transpose(cap_range.Value2)
     
    With ActiveWorkbook.Sheets("Page convocation")
        .Range("C26:AA26").MergeCells = False
        .[C26].Value = capacites
        .Range("C26:AA26").HorizontalAlignment = xlCenterAcrossSelection
        .Range("C26:AA26").WrapText = True
        .Range("C26:AA26").EntireRow.AutoFit
         Mahauteur = .Range("C26:AA26").RowHeight 'voir quelle est la hauteur de la ligne une fois cet autofit fait
        .Range("C26:AA26").MergeCells = True 'refusionner
        .Range("C26:AA26").RowHeight = IIf(Mahauteur > 15, Mahauteur, 15) 'si la hauteur une fois autofit fait est inferieur à 15 je laisse 15 en minimum sinon hauteur de l'autofit (perso c'est la hauteur mini que je voulais
        .Range("C26:AA26").HorizontalAlignment = xlLeft
    End With
     
    ActiveWorkbook.Sheets("capacités connaissances").Activate
    Application.ScreenUpdating = True
     
    End Sub

    Merci d'avance.

    NOVICE72

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] Pb avec Copier/coller d'une feuille Excel
    Par sebastien_oasis dans le forum Excel
    Réponses: 3
    Dernier message: 14/12/2007, 11h08
  2. [VBA-E] Help création d'un programme vba pour excel
    Par yampi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/01/2007, 11h46
  3. Réponses: 1
    Dernier message: 19/12/2006, 16h12
  4. [VBA-E]échec copier-coller entre 2classeurs
    Par touche_a_tout dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/12/2006, 23h22
  5. VBA-E: Pb copier-coller entre Excel et .csv
    Par tiger118 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2006, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo