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 :

Vérification des valeurs de cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    impiegato
    Inscrit en
    Mai 2019
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : impiegato

    Informations forums :
    Inscription : Mai 2019
    Messages : 124
    Par défaut Vérification des valeurs de cellule
    Bonsoir
    dans le fichier que je joins, je dois vérifier que les valeurs dans la plage A: D sont égales aux valeurs de la plage I: L la plage E: H doit avoir VRAI, si une cellule contient Faux je dois couper la plage A: D la copier dans la feuille PIPPO range A1
    déplace la plage sous les cellules supprimées et rend la plage E: H vraie.
    Il est possible d'automatiser l'intégralité de la feuille pouvant contenir plus de 30 000 lignes.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Le fichier
    Pièce jointe 485585

    Le code
    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
    Option Compare Text
    Option Explicit
     
    Sub Compare()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim Derlig_f1 As Long, Derlig_f2 As Long, i As Long, New_Lig As Long
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Set f1 = Sheets("intesta")
        Set f2 = Sheets("pippo")
     
        Derlig_f1 = f1.[A100000].End(xlUp).Row
        Derlig_f2 = f2.[A100000].End(xlUp).Row
        f1.Range(Cells(16, "E"), Cells(Derlig_f1, "H")).FormulaR1C1 = "=IF(RC1<>"""",RC[-4]=RC[4],"""")"
        f2.Cells.ClearContents
     
        New_Lig = 1
        For i = Derlig_f1 To 16 Step -1
            If f1.Cells(i, "A") <> f1.Cells(i, "I") Or f1.Cells(i, "B") <> f1.Cells(i, "J") Or f1.Cells(i, "C") <> f1.Cells(i, "K") Or f1.Cells(i, "D") <> f1.Cells(i, "L") Then
                f1.Range(Cells(i, "A"), Cells(i, "D")).Copy Destination:=f2.Cells(New_Lig, "A")
                New_Lig = New_Lig + 1
                f1.Range(Cells(i, "A"), Cells(i, "D")).Delete
            End If
        Next i
     
        'Réécriture des formules
        f1.Range(Cells(16, "E"), Cells(Derlig_f1 + 10, "H")).FormulaR1C1 = "=IF(RC1<>"""",RC[-4]=RC[4],"""")"
     
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Cdlt

  3. #3
    Membre actif
    Homme Profil pro
    impiegato
    Inscrit en
    Mai 2019
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : impiegato

    Informations forums :
    Inscription : Mai 2019
    Messages : 124
    Par défaut
    Merci comme toujours Arturo pour son intérêt.
    J'ai essayé la macro mais j'ai constaté qu'elle me supprime également les valeurs présentes à la fois dans la plage A: D et dans la plage I: L example
    10002347 F1105 32 0
    10002347 B0016 0 211,36

    J'essaie d'expliquer manuellement ce que je fais:
    je fais défiler les cellules pour ne pas trouver FALSE dans une cellule de la plage E: H à ce stade, ctrl x et je supprime les cellules correspondantes (plage A: D)
    puis je les copie dans la feuille Pippo.
    Maintenant, la plage A87: D87 est vide, puis je sélectionne la plage qui va de A88: D184 ctr x et je la copie dans la plage vide, puis je me déplace vers la plage E: H, sélectionne la plage où il y a VRAI. Double-cliquer et copier les formules dans afin qu'ils me reviennent VRAI. Je dois parcourir toute la table, qui peut contenir plus de 30 000 lignes, de manière à éviter les erreurs (en pratique, les valeurs présentes dans A B C D doivent être égales à I J K L

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Ok, parce que je suis parti du bas en remontant, correction:
    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
    Option Compare Text
    Option Explicit
     
    Sub Compare()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim Derlig_f1 As Long, Derlig_f2 As Long, i As Long, New_Lig As Long
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Set f1 = Sheets("intesta")
        Set f2 = Sheets("pippo")
     
        Derlig_f1 = f1.[A100000].End(xlUp).Row
        Derlig_f2 = f2.[A100000].End(xlUp).Row
        f1.Range(Cells(16, "E"), Cells(Derlig_f1, "H")).FormulaR1C1 = "=IF(RC1<>"""",RC[-4]=RC[4],"""")"
        f2.Cells.ClearContents
     
        New_Lig = 1
        For i = 16 To Derlig_f1
            If i = 180 Then Stop
            If f1.Cells(i, "A") <> f1.Cells(i, "I") Or f1.Cells(i, "B") <> f1.Cells(i, "J") Or f1.Cells(i, "C") <> f1.Cells(i, "K") Or f1.Cells(i, "D") <> f1.Cells(i, "L") Then
                f1.Range(Cells(i, "A"), Cells(i, "D")).Copy Destination:=f2.Cells(New_Lig, "A")
                New_Lig = New_Lig + 1
                f1.Range(Cells(i, "A"), Cells(i, "D")).Delete
                'Réécriture des formules
                f1.Range(Cells(16, "E"), Cells(Derlig_f1 + 10, "H")).FormulaR1C1 = "=IF(RC1<>"""",RC[-4]=RC[4],"""")"
            End If
        Next i
     
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Mais pour les dernières lignes de votre tableau de droite, je ne comprends pas: comment avez-vous fait pour trouver la ligne en vert, puisqu'elle ne correspond pas à celle du tableau de gauche?
    Pièce jointe 485632

  5. #5
    Membre actif
    Homme Profil pro
    impiegato
    Inscrit en
    Mai 2019
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : impiegato

    Informations forums :
    Inscription : Mai 2019
    Messages : 124
    Par défaut
    Bonsoir Arturo j'ai essayé la macro avec une liste un peu différente mais 'je reste coincée je joins des fichiers
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    J'avais oublié d'enlever un test sur une ligne, Revoici le fichier avec une petite modification.

    Pièce jointe 485711

    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
    Option Compare Text
    Option Explicit
     
    Sub Compare()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim Derlig_f1 As Long, Derlig_f2 As Long, i As Long, New_Lig As Long
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Set f1 = Sheets("intesta")
        Set f2 = Sheets("pippo")
     
        Derlig_f1 = f1.[A100000].End(xlUp).Row
        Derlig_f2 = f2.[A100000].End(xlUp).Row
        f1.Range(Cells(16, "E"), Cells(Derlig_f1, "H")).FormulaR1C1 = "=IF(RC1<>"""",RC[-4]=RC[4],"""")"
        f2.Cells.ClearContents
     
        New_Lig = 1
        For i = 16 To Derlig_f1
            If f1.Cells(i, "A") = "" Or f1.Cells(i, "B") = "" Or f1.Cells(i, "C") = "" Or f1.Cells(i, "D") = "" Then Exit Sub
            If f1.Cells(i, "A") <> f1.Cells(i, "I") Or f1.Cells(i, "B") <> f1.Cells(i, "J") Or f1.Cells(i, "C") <> f1.Cells(i, "K") Or f1.Cells(i, "D") <> f1.Cells(i, "L") Then
                f1.Range(Cells(i, "A"), Cells(i, "D")).Copy Destination:=f2.Cells(New_Lig, "A")
                New_Lig = New_Lig + 1
                f1.Range(Cells(i, "A"), Cells(i, "D")).Delete Shift:=xlUp
                'Réécriture des formules
                f1.Range(Cells(16, "E"), Cells(Derlig_f1, "H")).FormulaR1C1 = "=IF(RC1<>"""",RC[-4]=RC[4],"""")"
                i = i - 1
            End If
        Next i
     
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Cdlt

Discussions similaires

  1. Code VBA: Comparer et copier des valeurs de cellules
    Par bmeda72 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/08/2008, 22h40
  2. Réponses: 3
    Dernier message: 23/06/2008, 11h05
  3. Récupérer des valeurs de cellules-cas spécifique
    Par casavba dans le forum Excel
    Réponses: 4
    Dernier message: 06/09/2007, 11h38
  4. Utiliser des valeur de cellule dans un userform
    Par swissmade dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/07/2007, 19h38
  5. Comment enlever la saisie semi-automatiques des valeurs de cellule?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/06/2007, 01h05

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