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-EXCEL] copiage conditionnel


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
    Septembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 138
    Par défaut [VBA-EXCEL] copiage conditionnel
    Bonjour, j ai un probleme de copie conditionnelle que je n arrive pas à résoudre...
    ex de données
    09:31 ahs12,a ahs2,m 15
    09:32 ahs2,a ahs12,m 147
    09:37 ahs3,a ahs4,m 555
    09:54 ahs4,a ahs3,m 236


    en fait je voudrais copier dans la colonne H les données de la colonne D si
    le nom en colonne C ressemble au nom en colonne B...avec le code ci dessous ca ne fonctionne pas car C n est jamais égal à B...que faire pour que ces données soient remises dans l ordre?


    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
    Dim rS As Range 'Tableau de donnée Source
     Dim rl As Range ' ligne du tableau de donnée
     Dim cDest As Range ' Cellule de destination
     
     
     
     Set cDest = Range("H1") ' 1°Cellule destination
     
     
     Set rS = Cells(3, 1).CurrentRegion ' on suppose que le tableau de donnee commence en C1..
     For Each rl In rS.Rows 'parcours les lignes du tableau de donnée source
     
      If (Left(rl.Cells(3), 5) = Left(rl.Cells(2), 5)) Then cDest.Value = rl.Cells(1, 4)  ' Copie contenue colonne D ( 4°)
         Set cDest = cDest.Offset(1, 0) 'Passe ligne suivante
     
     
     
     
     
     Next
     
    End Sub
    Merci a ceux qui pourront m aider

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pourrai tu être plus clair sur l'emplacement de tes données histoire comprendre la sélection effectuée par le currentRegion...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 138
    Par défaut
    A B C D
    ligne 1 09:31 ahs12,a ahs2,m 15
    ligne 2 09:32 ahs2,a ahs12,m 147
    ligne 3 09:37 ahs3,a ahs4,m 555
    ligne 4 09:54 ahs4,a ahs3,m 236


    en fait je veux remettre la colonne C (et les chiffres de la colonne D associés) dans le meme ordre que la colonne B...le problème étant que les noms de la colonne C finissent par ,m et que la colonne B ils finissent par ,a.

    Merci de ton aide

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    peu tu nous mettre ce que tu ve obtenir à la fin ... je crois avoir saisi mais je suis pas sur ..:

    en fait si j'ai bien compris pour chaque ligne du tableau .. il te faut refaire une autre boucle pour trouver la ligne ou la valeur en colonne C correspond à la valeur de la ligne en cours colonne b ( )

    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
     
     
    Sub test()
    Dim rS As Range 'Tableau de donnée Source
     Dim rl As Range ' ligne du tableau de donnée
     Dim r2 As Range
     Dim cDest As Range ' Cellule de destination
     
     
     
     Set cDest = Range("H1") ' 1°Cellule destination
     
     
     Set rS = Cells(3, 1).CurrentRegion ' on suppose que le tableau de donnee commence en C1..
     For Each rl In rS.Rows 'parcours les lignes du tableau de donnée source
       Debug.Print "Compare " & rl.Cells(3).Address & " et " & rl.Cells(2).Address
      For Each r2 In rS.Rows
       If (Left(rl.Cells(2), 5) = Left(r2.Cells(3), 5)) Then
          cDest.Value = r2.Cells(3)  ' Copie contenue colonnes c etD D ( 4°)
          cDest.Offset(0, 1) = r2.Cells(4)
         Exit For
       End If
      Next
       Set cDest = cDest.Offset(1, 0) 'Passe ligne suivante
     Next
     
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 138
    Par défaut
    c est exactement ca !
    Mille mercis à toi bbil

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

Discussions similaires

  1. [VBA/Excel] Label conditionnel
    Par rodrigue62 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/06/2007, 15h00
  2. [VBA EXCEL]: Savoir si une mise en forme conditionnelle est active
    Par ADONET dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/01/2007, 14h59
  3. [VBA][Excel] mise en forme conditionnelle
    Par titflocon dans le forum Access
    Réponses: 9
    Dernier message: 19/12/2005, 10h13
  4. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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