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 :

Comparaison cellules de feuillets différents [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut Comparaison cellules de feuillets différents
    Bonjour à tous !

    Je souhaiterais développer un programme permettant de comparer deux valeurs sur différents feuillets. Je m'explique.

    Sur un feuillet, je dispose du nom d'un site à visiter, avec une durée de transport pour le rejoindre, communiquée par un tiers.
    Sur un second feuillet, je dispose des durées usuelles pour effectuer le trajet propre à un site.

    Je souhaiterais vérifier que les durées mentionnées sur le feuillet 1 correspondent aux durées usuelles renseignées sur le feuillet 2 (+/- 10%).
    J'ai codé le programme ci-dessous pour essayer de répondre à ce besoin (en sélectionnant initialement la colonne des durées du feuillet 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
    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
    Sub Test()
     
    Dim cel1 As Range
    Dim cel2 As Range
    Dim site As String
    Dim site2 As String
    Dim duree1 As Double
    Dim duree2 As Double
    Dim i As Double
     
     
    For Each cel1 In Selection
     
    site = cel1.Offset(0, -3).Value
    site2 = Worksheets("Feuil2").Cells(1, cel1.Row).Value
     
        If site2 = site Then
     
            duree2 = Worksheets("Feuil2").Cells(2, cel1.Row).Value
     
        End If
     
     
        If duree2 > 1.1 * cel1.Value Then
     
            cel1.Interior.ColorIndex = 3
     
         ElseIf duree2 < 0.9 * cel1.Value Then
     
            cel1.Interior.ColorIndex = 2
     
        Else
     
            cel1.Interior.ColorIndex = 1
     
        End If
     
    Next
     
     
    End Sub
    Qu'en pensez-vous ? (mis à part que ça ne semble pas fonctionner tel quel, à l'heure actuelle )
    Merci d'avance de votre aide !

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Re,

    Quelques questions basiques, je pense pouvoir m'en tirer pour le reste

    J'ai une erreur quand je compile à la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    For Each cel3 In Worksheets("Feuil2").Columns(1)
    site2 = cel3.Value
    ...
    L'erreur est "Incompatibilité de type". site2 est un String, cel3 une cellule contenant un string.

    J'ai déjà codé le même genre d'affectation dans mon programme, sans que cela génère une erreur. Quid ?

    Deuxième (et dernière ) p'tite question, je souhaiterais indiquer une plage de cellule à parcourir pour ma boucle For. J'ai essayé un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cel3 In Worksheets("Feuil2").Cells(1 , 2:Range("A2").End(xlDown))
    sans grand succès. Je n'ai pas réussi à trouver de syntaxe appropriée pour le moment..

    Merci d'avance !

  3. #3
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut
    Bonjour

    As tu bien déclarer cel3?

    Idem pour ta 2eme Question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Zone1 As Range
    Set Zone1 = Range("A1:A100)
     
    For Each cell In Zone1...

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Bonjour, et merci de ta réponse ! J'ai bien réussi à résoudre mon problème..

    J'ai un petit souci de syntaxe.
    Via le code ci-dessous, je récupère le numéro de la dernière ligne non vide.
    Je cherche ensuite à sélectionner la colonne D, de la ligne 2 à la dernière ligne non vide. J'ai écrit le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    il = Worksheets("Feuil1").Cells(65535, 4).End(xlUp).Row
    cel3 = "D" & il
    cel4 = Range(cel3)
    Range("D2:cel4").Select
    Le résultat retourné est surprenant : il me sélectionne la plage D2:XFD4 !
    Où est l'erreur ?

    Merci encore.. !

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Il y a au moins 2 erreurs, l'une de syntaxe et l'autre de fonctionnement
    J'écrirais comme ceci (je ne sélectionne pas les plages, c'est déconseillé du moment qu'on peut travailler directement avec). Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim iL As Long
     
    With Worksheets("Feuil1")
        iL = .Cells(.Rows.Count, 4).End(xlUp).Row
        .Range("D2:D" & iL).Interior.ColorIndex = 6
    End With

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Par défaut
    Merci, ça fonctionne déjà beaucoup moins sans faute

    Beaucoup mieux pardon, vous aurez compris

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

Discussions similaires

  1. [XL-2010] Comparaison cellule dans deux classeurs différents avec Requete SQL
    Par jgresse1025 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/03/2015, 14h41
  2. Comparaison cellules dans onglets différents
    Par Estaque3394 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/11/2012, 11h29
  3. Réponses: 8
    Dernier message: 31/01/2008, 00h25
  4. Compter des cellules de couleurs différentes
    Par solorac dans le forum Excel
    Réponses: 3
    Dernier message: 13/06/2007, 12h24
  5. [VBA-E] Probleme comparaison cellules
    Par andrew07 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/04/2007, 17h36

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