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 :

Copier coller en VBA sans tenir compte d'aucune formule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut Copier coller en VBA sans tenir compte d'aucune formule
    Bonjour,
    Je cherche une formule VBA pour l’incorporer dans une macro que j’ai.
    Cette formule je voudrais qu’elle me recopie une plage de cellules, exemple de « AE17 à AE38 », dans un autre classeur, mais sans tenir compte des cellules qui ne contiennent que des formules.

    En clair, si de « AE17 à AE20 » il y a un résultat dans les cellules, elle les colle dans l’autre classeur.
    Et pour le reste des cellules allant de « AE21 à AE38 », elle les ignore, s'il n'y a que les formules.

    Actuellement lorsque je recopie cette plage, la macro me colle la sélection dans la colonne « F » d’un autre classeur, par le biais de cette formule : Range("F65536").End(xlUp)(2).Select , cela fonctionne, sauf que le collage n’est pas en continu, car les cellules ne contenant pas de valeurs, mais uniquement des formules, sont comptées quand même en cellules pleines du fait qu’elles contiennent une formule, et, me crée un trou entre deux collages.
    Exemple :
    1---------1
    2---------2
    3---------3
    ----------4
    ----------
    4
    Première colonne = 1 , 2 , 3, = le premier collage, 4 = le deuxième collage, et le blanc entre deux c’est du aux cellules sans résultats, mais contenant uniquement une formule, et qui sont comptées comme pleines.

    Deuxième colonne = les deux collages comme je voudrai qu’ils soient.

    Voici le code dont je me sers actuellement.

    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
    'Je copie la plage des Désignations'
     
    Range("AE17:AE38").Select
        Application.CutCopyMode = False
        Selection.Copy 
     
    'Je clic sur le lien qui va vers la feuille "SuiviClient"'
     
        Range("J8:J9").Select
        Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
     
    'Je colle la sélection en colonne "F"'
     
        Range("F65536").End(xlUp)(2).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
    Les formules se trouvant dans les cellules sont des formules « RechercheV »

    Quelqu’un aurait-il une solution a ce problème ?

    Pour info j’utilise Excel d'Office 2007

    Merci d’avance pour votre aide

    Cordialement

    Dubdub

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonsoir,

    Un exemple à adapter pour copier les valeurs de la colonne F de Feuil1 dans la colonne A de Feuil2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CopierCollerValeurs()
        Dim c As Range, Plage As Range, Ligne As Long
        On Error Resume Next
        Set Plage = Sheets("Feuil1").Columns(6).SpecialCells(xlCellTypeConstants)
        If Err.Number <> 0 Then Exit Sub
        On Error GoTo 0
        With Sheets("Feuil2")
            For Each c In Plage
                Ligne = Ligne + 1
                .Cells(Ligne, 1).Value = c.Value
            Next c
        End With
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Bonsoir Daniel,

    Merci tout d'abord de vous être penché sur mon problème.

    J'ai un petit souci avec votre code, en effet je ne suis pas très expert en programmation, je suis capable de faire une macro et d'y ajouter un morceau de code, mais là je plante.

    Vous serait-il possible de m'explquer ou je dois placer ce code, avant le code macro que j'ai fait, dans ThisWorkbook, ou encore dans la feuille !


    Je vous remercie d'avance de votre aide

    Cordialement
    Dubdub

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    J'ai modifié le code. Tu mets la macro dans un module standard. Tu n'as pas besoin de lien hypertexte. La macro récupère les cellules contenant des valeurs dans la plage de "Feuil1" (à modifier)et les écrit sur la feuille "Feuil2" (à modifier) en colonne F à la suite des données déjà existantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CopierCollerValeurs()
        Dim c As Range, Plage As Range, Ligne As Long
        On Error Resume Next
        Set Plage = Sheets("Feuil1").[AE17:AE38].SpecialCells(xlCellTypeConstants)
        If Err.Number <> 0 Then Exit Sub
        On Error GoTo 0
        With Sheets("Feuil2")
            For Each c In Plage
                Ligne = .Cells(.Rows.Count, 6).End(xlUp).Row + 1
                .Cells(Ligne, 1).Value = c.Value
            Next c
        End With
    End Sub

Discussions similaires

  1. [XL-2010] comment copier coller des cellules sans prendre en compte les lignes cachées
    Par bboy-eazy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/09/2014, 15h20
  2. Réponses: 3
    Dernier message: 19/02/2014, 17h01
  3. [if pos()] sans tenir compte majuscules/minuscules
    Par Droïde Système7 dans le forum Delphi
    Réponses: 2
    Dernier message: 28/09/2006, 17h33
  4. Réponses: 1
    Dernier message: 17/08/2006, 20h27
  5. faire une recherche sans tenir compte de la casse
    Par richard038 dans le forum SQL
    Réponses: 5
    Dernier message: 11/10/2005, 09h07

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