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 :

Test de comparaison entre deux feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut Test de comparaison entre deux feuilles
    Bonjour,

    je suis bloquée toute la journée sur un test de comparaison entre deux feuilles qui ne marche pas.
    je dois parcourir la feuille 1 "Entity listing" et chercher ces valeurs de la colonne A dans le la feuille 2 "Status Actual". Si je trouve la valeur, je dois vérifier « colonne A » si égal à PH1 ou PH2 si PH1, il faut récupérer son statut « colonne D » et le coller dans la feuille 1.

    Je vous remercie par avance.
    Cordialement




    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
    37
    38
    39
    40
    41
    42
    43
    Sub Bouton1_Cliquer()
        Dim classCourant As Workbook
        Dim feuilleCourant As Worksheet
     
        Dim cellsSource As Variant
        Dim cellsDestination1 As Variant
        Dim cellsDestination2 As Variant
     
     
        Dim DernLigneE As Long
        Dim DernLigneS As Long
     
        Dim EntityE, EntityS, PH As Variant
        Dim listEntity, listStatus As Worksheet
     
        Set classCourant = ActiveWorkbook
     
        Set listEntity = Worksheets("Entity listing")
        Set listStatus = Worksheets("Status Actual")
     
        Set DernLigneE = listEntity.Range("A" & Rows.Count).End(xlUp).Row
        Set DernLigneS = listStatus.Range("A" & Rows.Count).End(xlUp).Row
     
            For I = 0 To DernLigneE
                Set EntityE = listEntity.Cells(I, 1)
                Set cellsDestination1 = listeEntity.Cells(I, 2)
                Set cellsDestination2 = listeEntity.Cells(I, 3)
                     For J = 0 To DernLigneS
     
                          Set EntityS = Sheets(2).Cells(J, 2)
                          Set PH = Sheets("Status Actual").Cells(J, 1)
                          Set cellsSource = listStatus.Cells(J, 3)
     
                            If EntityE = EntityS Then
                                If PH = "PH1" Then
                                    cellsDestination1 = cellsSource
                                Else
                                    cellsDestination2 = cellsSource
                                End If
                            End If
                        Next J
              Next I
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Bonjour,
    Citation Envoyé par Orda80 Voir le message
    qui ne marche pas.
    Pourrais-tu être plus précis ? Un message d'erreur ? Si oui lequel et à quel ligne ? Si non que fait la macro ?

  3. #3
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut
    Bonjour Halaster08,

    je vous remercie pour votre réponse.

    le message d'erreur est "erreur de compiation: Objet Requis"

    la macro cherche un nom de la 1er feuille dans la 2eme feuille, si elle le trouve il faut vérifier la valeur de la colonne A, si egal à PH1 il faut recopie la valeur de la cellule de la colonne D dans la 1er feuille davant le nom chercher dans la colonne B, si non si egal à PH2 il faut le recopie dans la colonne C.

    j'espére que c'est plus claire,

    ci-joint le classer avec les données et la macro.

    Cordialement,
    Orda
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    En supposant que le code marche, il risque d'être assez long. Je vous suggère quelques pistes:

    - une cellule est un objet, et pas une variant, donc autant la définir comme un Range
    - vous pouvez récupérer directement les valeurs d'un range sans le parcourir cellule par cellule (gain de temps de processing entre 3 et 30 facilement)
    - vous pouvez jouer avec le Range.SpecialCells pour ne récupérer que les cellules non vides!

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For I = 0 To DernLigneE
                Set EntityE = listEntity.Cells(I, 1)
    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
     
    'Par exemple (stupide, juste pour le concept)
    Dim SrcR As Range
    Dim Cl As Range
    Dim SrcValAR As Variant
     
    Set SrcR = Range("A:A").SpecialCells(xlCellTypeConstants)
    SrcValAR = Range("A:A").Value   'Retourne un tableau avec toutes les valeur du Range
     
    Debug.Print SrcR.AddressLocal
    For Each Cl In SrcR.Cells
     
        Debug.Print "Do someting with "; Cl.AddressLocal, Cl.Value
     
    Next Cl
    End Sub
    Bonne continuation

  5. #5
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Octobre 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2018
    Messages : 38
    Par défaut
    Je début avec VBA donc je ne comprands pas toute les fonctionalités.

    je vous remrcie pour toute ces informations, je vais essayer de le refaire selon vous conseilles.

    cordialement,
    Orda

Discussions similaires

  1. [XL-2003] Comparaison données entre deux feuilles
    Par ivanG dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/05/2014, 09h51
  2. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  3. Test d'égalité entre deux algorithmes, ça existe, est-ce faisable ?
    Par davcha dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 25/04/2006, 18h04
  4. Réponses: 6
    Dernier message: 18/04/2006, 13h11
  5. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53

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