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 une plage de donnée sous condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Par défaut copier une plage de donnée sous condition
    Bonjour,
    Je suis nouveau en programmation du VBA, en fait j'ai fait une petite macro qui me récupère des donnés situé dans une plage de cellule et les coller dans une autre sous condition ( si la cellule Y3 = AP3).
    Svp est ce qu'il y a quelqu'un parmi vous qui peux m'aider. Merci avance.
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 704
    Par défaut
    Bonjour et bienvenue au forum !
    Pourrais-tu copier ton code sous format de texte dans ton message, stp ? C'est plus facile pour nous pour le reprendre ensuite. Ecris le entre balises code (bouton #)
    Néanmoins quelques commentaires :
    1. Tu peux enlever tous les ActiveWindow.ScrollColumn et ScrollRow, ils ne servent à rien dans ton code. Cela permet de "bouger" le tableau.
    2. Il est toujours bon de déclarer ses variables. Ceci se fait en tout premier dans le code (avant toute action).
    3. IsNumeric renvoie vrai si l'argument est numérique, faux sinon. Par ex. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox IsNumeric(45)     'renvoie "True"
    MsgBox IsNumeric("blabla")     'renvoie "False"
    4. Lors de ta première condition If, tu utilises condition1 et condition2, mais tu ne dis pas ce que valent condition1 et condition2.
    5. Select permet de sélectionner une cellule. Pour récupérer la valeur d'une cellule, on utilise la propriété Value :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeurDeA1= Range("A1").Value
    6. Dans ton message tu dis que tu veux copier si la cellule Y3 = AP3. Or dans ton code, tu copies si condition1 = 8 et condition2 = 2 (8<>2 )
    7. Evite d'utiliser Select/Activate .... Ca entraîne souvent des problèmes difficilement résolvables. Pour copier-coller par ex., utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("V6:AM92").Copy
    Range("AP6").PasteSpecial ...



    Attention, ceci est le forum Excel, pas le forume VBA-Excel : pour la prochaine fois

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 5
    Par défaut Résolution de problème
    Bonjour,
    Merci Riaolle pour votre explication voila j'ai changé le programme mais il beugue au niveau du collage, du coup est ce que le problème viens de la formule des cellules ou je colle les valeurs ou bien la formule de collage.

    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
    Sub copier()
     
     If Range("V3") = 8 Then
     
     Sheets("Tableau").Select
     Range("V6:AM92 ").Select
     Selection.Copy
     
     Sheets("tableau").Select
     Range("AP6:BG92").Select     ' la plage (les cellules) ou je veux coller mes valeurs
     Selection.PasteSpecial Paste:=x1PasteValues   ' je veux un collage spécil qui colle juste la valeur (le text)
     
     ElseIf Range("V3") = 9 Then
     
     Sheets("Tableau").Select
     Range("V6:AM92 ").Select
     Selection.Copy
     
     Sheets("tableau").Select
     Range("BJ6:CA92").Select   ' la plage (les cellules) ou je veux coller mes 2 eme valeurs si la condition est bonne
     Selection.PasteSpecial Paste:=x1PasteValues  ' je veux un collage spécil qui colle juste la valeur (le text)
     
     
     ElseIf Range("V3") = 10 Then
     
     Sheets("Tableau").Select
     Range("V6:AM92 ").Select
     Selection.Copy
     
     Sheets("tableau").Select
     Range("CD6:CU92").Select     'la plage (les cellules) ou je veux coller mes valeurs
     Selection.PasteSpecial Paste:=x1PasteValues  ' je veux un collage spécil qui colle juste la valeur (le text)
     
     End If
     
    End Sub
    Merci de me donne un coup de main.

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 704
    Par défaut
    Je me cite :
    7. Evite d'utiliser Select/Activate .... Ca entraîne souvent des problèmes difficilement résolvables. Pour copier-coller par ex., utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("V6:AM92").Copy
    Range("AP6").PasteSpecial ...
    Avec PasteSpecial mieux vaut coller à partir d'une cellule que sur une plage de cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub copier()
     
     If Range("V3").Value = 8 Then
         Sheets("Tableau").Range("V6:AM92 ").Copy
         Sheets("tableau").Range("AP6").PasteSpecial Paste:=xlPasteValues   ' je veux un collage spécil qui colle juste la valeur (le text) 
     ElseIf Range("V3").Value = 9 Then
         Sheets("Tableau").Range("V6:AM92 ").Copy
         Sheets("tableau").Range("BJ6").PasteSpecial Paste:=xlPasteValues  ' je veux un collage spécil qui colle juste la valeur (le text)
     ElseIf Range("V3").Value = 10 Then
         Sheets("Tableau").Range("V6:AM92 ").Copy
         Sheets("tableau").Range("CD6").PasteSpecial Paste:=xlPasteValues  ' je veux un collage spécil qui colle juste la valeur (le text)
     End If
     
    End Sub
    Après, je ne sais pas pourquoi, tu as écrit x1PasteValues et non pas xlPasteValues ...

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/07/2013, 09h36
  2. [XL-2010] Copier une plage de données d'un classeur excel X a un classeur excel Y
    Par CmsrFr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/05/2012, 19h00
  3. [OpenOffice][Tableur] [Macro] Comment copier une plage de données d'une Feuille "A" vers la Feuille Active
    Par clduick dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 03/02/2012, 11h39
  4. Copier une plage de données vers un onglet d'un autre document
    Par morgane07 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/04/2010, 15h59
  5. copier une plage de donnée d'un fichier à un autre
    Par kristoch91 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/10/2008, 10h26

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