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 :

copie de cellule par macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut copie de cellule par macro
    Bjr,

    J'ai 3 feuilles sur le même fichier, feuil1, feuil2, feuil3 !
    Sur mes feuilles 1 et 2, j'ai la même forme de tableau en A B C D, ma feuille 3 est vide.
    Je voudrais que pour mes 2 feuilles, si une condition est rempli en colonne B, (>90) , la ligne correpondante soit ecrite sur ma feuille 3,
    Je m'explique, si sur ma feuille 1, en B50 par exemple, ma condition est vérifié, je voudrais que la ligne 50 dc les colonne A B C D, soit écrite en ligne 1, A B C D de ma feuille 3. Si sur la feuille 2, B1000 est verifié, même chose mais en ligne2 de ma feuille3 et ainsi de suite...
    Jai une bout de code qui ne marche pas, pe être je me trompe de direction, merci de votre aide.
    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 erreur()
    Sheets("Feuil1").Columns("B:B").Select
        For Each cell In Selection
            If cell > 90 Then
                ligne1 = cell.Row
                Sheets("Feuil3").Select
                ligne = Sheets("Feuil3").Range("A65536").End(xlUp).Row
                Sheets("Feuil1").Range("A" & ligne1).Copy = ActiveCell.FormulaR1C1.Feuil3.Range("A" & ligne)
                Sheets("Feuil1").Range("B" & ligne1).Copy = ActiveCell.FormulaR1C1.Feuil3.Range("B" & ligne)
                Sheets("Feuil1").Range("C" & ligne1).Copy = ActiveCell.FormulaR1C1.Feuil3.Range("C" & ligne)
                Sheets("Feuil1").Range("D" & ligne1).Copy = ActiveCell.FormulaR1C1.Feuil3.Range("D" & ligne)
            End If
        Next cell
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Avec ton code il est difficile de savoir ce que tu copies. Tu as donc deux versions possibles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Worksheets("Feuil3").Range("A" & ligne).copy Worksheets("Feuil1").Range("A" & ligne1)
    pour copier de feuil3 vers feuil1
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Worksheets("Feuil1").Range("A" & ligne1).Copy  Worksheets("Feuil3").Range("A" & ligne)
    pour copier de feuil1 vers feuil3

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut
    Je copie de la feuille 1 vers la feuille3
    Ca me emt tjr le même message d'erreur, "La methode select de la classe Range a échouer"
    Pourtant ca devrais être bon,
    Pour chaque cellulle de ma colonne B, je regarde si c'est supérieur a 90, si ca l'est je copie A B C D de la feuille 1 après la derniére ligne ecrite de la feuille3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sheets("Feuil1").Columns("B:B").Select
        For Each cell In Selection
            If cell > 90 Then
                ligne1 = cell.Row
                Sheets("Feuil3").Select
                ligne = Sheets("Feuil3").Range("A65536").End(xlUp).Row
                Worksheets("Feuil1").Range("A" & ligne1).Copy Worksheets("Feuil3").Range("A" & ligne)
                Worksheets("Feuil1").Range("B" & ligne1).Copy Worksheets("Feuil3").Range("B" & ligne)
                Worksheets("Feuil1").Range("C" & ligne1).Copy Worksheets("Feuil3").Range("C" & ligne)
                Worksheets("Feuil1").Range("D" & ligne1).Copy Worksheets("Feuil3").Range("D" & ligne)
            End If
        Next cell

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim cell As Range
       For Each cell In Worksheets("Feuil1").Range("B:B")
            If cell > 90 Then
                ligne1 = cell.Row
                Ligne = Sheets("Feuil3").Range("A65536").End(xlUp).Row
                Worksheets("Feuil1").Range("A" & ligne1).Copy Worksheets("Feuil3").Range("A" & Ligne)
                Worksheets("Feuil1").Range("B" & ligne1).Copy Worksheets("Feuil3").Range("B" & Ligne)
                Worksheets("Feuil1").Range("C" & ligne1).Copy Worksheets("Feuil3").Range("C" & Ligne)
                Worksheets("Feuil1").Range("D" & ligne1).Copy Worksheets("Feuil3").Range("D" & Ligne)
            End If
        Next cell
    For Each cell In Worksheets("Feuil1") attend un range, pas une colonne
    Bonne journée

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 246
    Par défaut
    Ok,
    Alors résultat, ca marche, mais le problème c'est que je ne peut avoir qu'une seul valeur suppérieur a 90, car il prend la derniére et la met sur la 1er ligne.
    Il n'y a pas la succéssion des lignes sur la feuille 3, je ne peux pas mettre d'entete, car il écrit dessus.

  6. #6
    Membre confirmé
    Profil pro
    développeur VBA
    Inscrit en
    Août 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : développeur VBA

    Informations forums :
    Inscription : Août 2006
    Messages : 57
    Par défaut
    ajoute un compteur
    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
     
    Dim cell As Range
    dim i as integer
    i=0
       For Each cell In Worksheets("Feuil1").Range("B:B")
            If cell > 90 Then
                ligne1 = cell.Row
                Ligne = Sheets("Feuil3").Range("A65536").End(xlUp).Row
    Ligne=Ligne+i
    i=i+1
                Worksheets("Feuil1").Range("A" & ligne1).Copy Worksheets("Feuil3").Range("A" & Ligne)
                Worksheets("Feuil1").Range("B" & ligne1).Copy Worksheets("Feuil3").Range("B" & Ligne)
                Worksheets("Feuil1").Range("C" & ligne1).Copy Worksheets("Feuil3").Range("C" & Ligne)
                Worksheets("Feuil1").Range("D" & ligne1).Copy Worksheets("Feuil3").Range("D" & Ligne)
            End If
        Next cell

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

Discussions similaires

  1. [XL-2003] mettre une formule dans une cellule par macro
    Par jauffray.delteil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/11/2021, 14h54
  2. copie de tableau par macro
    Par number8326200 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/10/2012, 08h30
  3. Figer une cellule par macro
    Par Val_221 dans le forum Cognos
    Réponses: 0
    Dernier message: 01/02/2011, 20h18
  4. Sélectionner une chaine de car. dans une cellule par macro
    Par CyrilAtOffice dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/03/2010, 16h22
  5. copie de cellule avec macro ne fonctionne pas
    Par dyjoca88 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/06/2009, 17h46

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