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 :

VBA : copier une cellule sous condition d'une page à une autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 52
    Par défaut VBA : copier une cellule sous condition d'une page à une autre
    Bonjour,
    Je débute dans VBA et je souhaiterai copier une cellule de la page 1 s'il y a un caractère bien spécifique dans la page.
    J'ai pour objectif de traiter des données et de les réorganiser.

    J'ai fait avec deux manières différentes cependant j'ai toujours le même message d'erreur 438, " propriété ou méthode non gérée par cette objet ".
    Le problème vient de la ligne "Sheets("P2").Range("A1").Value = Sheets("P1").nom_machine.Value".
    Mon programme fonctionne seulement si je change nom_machine par Sheets("P1").Range("D3").Value ce qui perd tout son intérêt car j'ai des tableaux différents tous les jours mais avec les même caractère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub orga()
     
     
        For Each nom_machine In Range("D1:D1200")
            If nom_machine.Value = "APTSTCOMP" Then
            Sheets("P2").Range("A1").Value = Sheets("P1").nom_machine.Value
            End If
        Next nom_machine
     
     
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub orga2()
        Do
            i = i + 1
            If i > 1000 Then Exit Do
        Loop While Cells(i, 4) <> "APTSTCOMP"
        Sheets("P2").Range("A1").Value = Sheets("P1").nom_machine.Value
     
    End Sub
    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    SAlut,

    des modifications a faire a deux niveaux :
    - la boucle sur le range en precisant la feuille P1
    - vu que le range est implicitement dans la feuille => pas besoin de Sheets devant
    - utiliser une variable a incrementer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub orga()
    Dim i As Integer
    i = 1
        For Each nom_machine In Worksheets("P1").Range("D1:D1200")
            If nom_machine.Value = "APTSTCOMP" Then
                Sheets("P2").Range("A" & i).Value = nom_machine.Value
                i=i+1
            End If
        Next  
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 52
    Par défaut
    Merci, ça fonctionne parfaitement.

    J'aimerais connaître la signification de ("A"& i) dans
    D'ailleurs en attendant j'ai essayé avec une boucle for qui fonctionne aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub orga1()
        For i = 1 To 1200
            If Cells(i, 4).Value = "APTSTCOMP" Then
            Sheets("P2").Range("A5").Value = Cells(i, 4).Value
            End If
        Next i
    End Sub

  4. #4
    Membre Expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 475
    Par défaut
    Bonjour,

    Ici,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("P2").Range("A1").Value = Sheets("P1").nom_machine.Value
    Je pense que tu devrais retirer cette partie :
    Ici,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each nom_machine In Range("D1:D1200")
    tu devrais peut-être spécifier quelle feuille
    ?

    Bon ben voilà en retard.

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour !

    Vu le besoin le plus efficace et ce en moins de dix lignes de code serait l'utilisation d'un filtre avancé !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/04/2016, 16h43
  2. [XL-2007] Modifier la couleur de texte d'une cellule sous condition
    Par LoInd dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/07/2012, 13h32
  3. [XL-2003] Coloriser une cellule sous condition
    Par cynoq dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/12/2011, 10h24
  4. Affichage de Box sous condition de valeur d'une cellule
    Par snowcho dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/02/2010, 17h52
  5. [XL-2003] faire Clignoter une cellule sous condition
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/06/2009, 18h49

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