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 cellule selon condition texte


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
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut Copier cellule selon condition texte
    Bonjour à vous tous,

    J'aurai besoin de votre aide concernant une macro:

    L'idée est de pouvoir lorsqu'une cellule de la colonne E comprend un caractère "x" , copier la cellule correspondant à la colonne B, C et D dans une autre feuille.

    et boucler dessus après.

    Voilà le bout de langage

    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 cop_col()
    On Error Resume Next
     
    Dim l As Long
    Dim derl As Long
     
    derl = Worksheets("BILAN").Range("C" & Rows.Count).End(xlUp).Row
     
    For l = 10 To derl
    If Cells(l, 5) = "*x*" Then
    Sheets("BILAN").Range("B" & ":D").Copy Sheets("commentaires pointage liasse").Range("B" & ":D").End(xlUp)(2)
    End If
    Next l
    End Sub
    En fait le problème c'est que ça ne fonctionne pas , ça me lance aucune erreur mais ça ne fonctionne pas

  2. #2
    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

    Effectivement avec la ligne n°10 cela ne peut marcher !

    Voir du côté de l'opérateur Like

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    Je suppose que s'il y a un copier il devrait y avoir un coller or je n'en vois pas. De plus boucler dessus ça veut dire quoi ?

  4. #4
    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 Robert,

    lorsque la destination est précisée en argument de la méthode de copie, c'est donc un Copier / Coller direct !

    Sinon pour ne pas boucler, utiliser un filtre comme ici

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Rebonjour à tous,

    En effet Rjamin le coller est compris dans le bout de langage avec le offset (2)

    Toute la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("BILAN").Range("B" & ":D").Copy Sheets("commentaires pointage liasse").Range("B" & ":D").End(xlUp)(2)
    et remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("BILAN").Range("B" & ":D").Copy 
    Sheets("commentaires pointage liasse").Activate
    Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Select
    Sheets("commentaires pointage liasse").Range("B" & ":D").Paste
    je joints un test avec langage associé au bouton Executer, feuil "Commentaires pointage"

    Test.zip
    Merci à vous tous.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour à tou(te)s,

    Peut-être ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub cop_col()
     
    Dim derl As Range, cel As Range
    With Worksheets("BILAN")
      Set derl = .Range("C" & .Rows.Count).End(xlUp)(1, 3)
      For Each cel In .Range("E10", derl)
        If UCase(cel) Like "*X*" Then
          .Range("B" & cel.Row, "D" & cel.Row).Copy Sheets("commentaires pointage liasse").Range("B" & Sheets("commentaires pointage liasse").Rows.Count).End(xlUp)(2, 1)
        End If
      Next cel
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Merci casefayere pour ta disponibilité merci à vous tous et à Rjamin pour ton aide.

    ça fonctionne très bien. j'ai une question par contre à quoi correspond le (1,3) et le (2,1) est ce pour dire décaler la ligne (sorte de offset)? et le point avant Range dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    derl = .Range("C" & .Rows.Count).End(xlUp)(1, 3)
     
    .Range("B" & cel.Row, "D" & cel.Row).Copy Sheets("commentaires pointage liasse").Range("B" & Sheets("commentaires pointage liasse").Rows.Count).End(xlUp)(2, 1)
    et c'est quoi la différence entre UCase et Select Case?

    Merci

  8. #8
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Comment indiquer en vba quand il copie et colle sur la feuil "commentaire pointage" s'il trouve une cellule déjà rempli sur cette feuil il ne colle po dessus mais il insère juste avant.

    Exemple de mon soucis ci-joint.

    Je comprend po pourquoi lorsque j'ai modifié le langage pour insérer d'autre paramètre ça ne fonctionne plus.

    Test.zip

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set derl = .Range("C" & .Rows.Count).End(xlUp)(1, 3)'donc dernière cellule en C décalée en E
    'essayes
    MsgBox derl.Address
    =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set derl = .Range("C" & .Rows.Count).End(xlUp).offset(0, 2)
    'essayes
    MsgBox derl.Address
    voir documentation à ce sujet sur les décalages
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Avant de répondre à tes questions, je t'en pose une : comprends-tu ce que tu fais ?

    En effet, tu as recopié mon code sans corriger quoique que ce soit or les noms de feuille ne correspondent pas et je ne suis pas sur que tu colles le résultat au bon endroit (ce n'est pas à moi de le deviner)

    Ta feuilles est nommée "commentaires pointage " avec de plus un espace en bout, nommes-la tout simplement "commentaires pointage" et corriges dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...Sheets("commentaires pointage"...)
    plutot que ce que tu indiques au départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...Sheets("commentaires pointage liasse")...
    Respectes ce que je viens d'écrire ci-dessus pour cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Set derl = .Range("F" & .Rows.Count).End(xlUp)(1, 3)
      For Each cel In .Range("H10", derl)
        If UCase(cel) Like "*X*" Then
          .Range("B" & cel.Row, "F" & cel.Row, "G" & cel.Row).Copy Sheets("commentaires pointage ").Range("B" & Sheets("commentaires pointage ").Rows.Count).End(xlUp)(2, 1)
        End If
      Next cel
    donc à corriger

    Si tu as des difficultés, dis vraiment où coller les lignes sélectionnées dans "BILAN"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Merci de tes conseils, c'était juste une omission de ma part!

    Cependant comment faire pour copier et coller les cellules qui remplissent mes critères sur la colonne "H" aussi, vu que lorsque j'insère le jet de code avec les modifications nécessaires ça ne s'applique que pour la colonne "E" et non les 2 ( E et H).


    ci-joint le fichier.

    Test.zip

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je viens de regarder ton dernier fichier qui est encore différent (Feuille "Commentaires.."), je vais voir ce que je peux faire et pour le peu que je comprends, patience !

    Déjà, arrêtes d'introduire l'instruction "On Error Resume Next" dans ton code, il ne doit pas y avoir d'erreur ou sinon cherches à la corriger, essayes ce code fait sur l'exemple de ton dernier fichier
    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
    Sub Mémo_liasse()
     
    Dim derl As Range, cel As Range, DerCom As Range
    Dim WsBilan As Worksheet, WsCom As Worksheet
    Set WsBilan = Sheets("BILAN")
    Set WsCom = Sheets("commentaires pointage")
    With WsCom
      Set DerCom = .Range("B" & .Rows.Count).End(xlUp)(2, 7)
      .Range("B5", DerCom).ClearContents
    End With
    With WsBilan
      Set derl = .Range("C" & .Rows.Count).End(xlUp)(1, 3)
      For Each cel In .Range("E10", derl)
        If UCase(cel) Like "*X*" Then
          .Range("B" & cel.Row, "D" & cel.Row).Copy WsCom.Range("B" & WsCom.Rows.Count).End(xlUp)(2, 1)
        End If
      Next cel
     
      Set derl = .Range("F" & .Rows.Count).End(xlUp)(1, 3)
      Set DerCom = WsCom.Range("E5")
      For Each cel In .Range("H10", derl)
        If UCase(cel) Like "*X*" Then
          .Range("B" & cel.Row).Copy DerCom
          .Range("F" & cel.Row, "G" & cel.Row).Copy DerCom(1, 2)
          MsgBox DerCom.Address
          Set DerCom = WsCom.Range("E" & WsCom.Rows.Count).End(xlUp)(2, 1)
        End If
      Next cel
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    J'ai vu que tu as cliqué sur sans plus d'indication sur la dernière proposition, je ne pense pas que ce soit l'esprit du forum !
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #14
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2014
    Messages : 23
    Par défaut
    Je vous remercie tous pour votre aide, DSL casefayere, j'étais en déplacement j'ai pas vu ta réponse.
    En tout cas ça marche super bien.

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

Discussions similaires

  1. Additionner des valeurs de cellules selon condition
    Par panda78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/09/2012, 17h38
  2. Débutant en VBA - Copier coller selon conditions
    Par anthony787 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2010, 16h29
  3. Copier coller selon condition
    Par trastrop dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/02/2009, 13h11
  4. Copie de cellules selon conditions
    Par frisette68 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/03/2008, 20h31
  5. Bloquer les cellules selon condition
    Par jokenjo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/01/2008, 14h21

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