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 des lignes d un tableau ( vba)


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
    Étudiant
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut comparaison des lignes d un tableau ( vba)
    Bonjour,
    svp dans un tableau ,si on veut fixer une ligne et comparer les valeurs de ses cellules avec les autres lignes(suivantes et précédentes pour le cas d'une ligne au milieu) et ceci par rapport à chaque colonne.
    (P.S: je developpe dans le code d'un bouton d'un user form, vaut mieu me proposer une methode sans 'sub' )
    merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je te suggère d'essayer de reformuler ta question de manière claire, précise et technique.
    - Je ne sais par exemple et entre autres pas ce que signifie
    fixer une ligne
    .
    - je ne comprends pas vraiment ce que signifie
    je developpe dans le code d'un bouton d'un user form
    - je ne vois pas non plus ce que pourrait être
    vaut mieu me proposer une methode sans 'sub'
    J'observe fréquemment que lorsque l'on s'est appliqué à définir techniquement un problème, on l'a très souvent déjà presque résolu, de ce seul fait.

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Outre le total accord avec l'intervention de unparia, j'interviendrais en one shoot sur ce fil.

    si tu entends par comparer : voir si la valeur est unique
    alors : NB.SI est ton ami (voir une concaténation sur il faut analyser en même temps chaque colonne de la ligne)
    sinon : d'autres contributeurs t'aideront quand tu auras suffisamment clarifié le sujet.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    je vois que la meilleure solution est de vous donner un exemple:
    supposons que j'ai 3 lignes contenant des valeurs et 2 colonnes,
    Nom : Capture3.PNG
Affichages : 856
Taille : 8,4 Ko

    On fixe la 1 ere ligne (a) ,apres on compare chacune de ces cellules avec celles qui la suivent : càd la cellule contenant 3 avec celle contenant 2 et 4 ...
    apres on fixe la 2 eme ligne (b) et on la compare avec celles qui la suivent et celles qui la précédent .
    De meme ,la cellule contanant 7 avec celle contenant 1 et 5.
    on a trouvé que : la valeur de a(=3) >= la valeur de b (=2).
    donc on met dans tab2 ,specifiquement dans la cellule de l'intersection de (a , b ) la valeur 1 ( 1 indique le numero de la colonne dans laquelle on fait la comparaison si la valeur de a>= b. si on effectue la comparaison dans la colonne 2, on mettra dans tab 2 la valeur 2 )
    et ainsi de suite pour les autres ligne et les autres colonnes .
    l'exemple (voir image) indique les donnees et la reponse espérée , j espere que c'est clair maintenant.
    PS. la diagonale du tab 2 ne contient rien ,car on ne compare aucune cellule avec elle meme.
    merci

    J ESPERE QUE C EST CLAIR MAINTENANT

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour AMINA ; bonjours à tous

    J ESPERE QUE C EST CLAIR MAINTENANT
    pas pour moi en tous cas !!! et même ton exemple à mon modeste avis n'aide pas à comprendre ta requête
    ; parfois tu écris (2;1) et parfois simple (1)
    s'agit il d'une opération de soustraction entre des valeurs des cellules et le résultat est retenu s'il est positive ou quoi ??
    si tu souhaite avoir de l'aide essayer d'être claire et simple et certes les supers membres de ce super site vont t'aider
    bonne journée

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    j'ai compris la logique avec ta copie écran, même s'il est vrai que ça m'a pris 5 bonnes minutes à comprendre.

    du coup, ça se fait très bien par formule Excel en concaténant deux fonction Si() qui chacun va tester sa propre colonne

    pourquoi vouloir le faire par VBA ? Au pire, manipules les formules par VBA. Pour se faire, il te suffit de trouver cette formule Excel et ensuite avec l'enregistreur de macro, tu auras une utilisation en VBA.

    Quelques indices pour bien chercher.

    Tu n'as besoin que de trois fonctions :

    - Si() : il va te permettre d'écrire le numéro de la colonne ou ne rien écrire
    - Index() : il va te permettre de trouver la bonne case de valeur à comparer, la ligne sera une recherche par Equiv (voir ligne en dessous)
    - Equiv() : imbriqué dans le Index, il va te donner la bonne ligne du tableau

    D'où une modélisation pour la première colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si(Index(MonTableauDepart; Equiv(LaLettreDeLaLigneDuTableauArrivee;LaColonneDesLettresDuTableauDeDepart;0);2)>Index(MonTableauDepart; Equiv(LaLettreDeLaColonneDuTableauArrivee;LaColonneDesLettresDuTableauDeDepart;0);2);"1";"")
    Cette formule écrira 1 si dans la première colonne, la "lettre en ligne" > la "lettre en colonne"
    Il reste donc à écrire la même chose pour la seconde colonne, la formule est identique, il faut remplacer le chiffre 2 par 3 pour décaler de colonne

    En utilisation des plages nommées sur : LaColonneDesLettresDuTableauDeDépart // LeTableauDeDepartComplet ==> ta formule se colle sur l'ensemble du tableau d'arrivée sans aucune modification


    Bons tests, avec un peu de jugeotte en quelques minutes ta formule est prête

  7. #7
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    pourquoi vouloir le faire par VBA ? Au pire, manipules les formules par VBA. Pour se faire, il te suffit de trouver cette formule Excel et ensuite avec l'enregistreur de macro, tu auras une utilisation en VBA.

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2016
    Messages : 12
    Par défaut
    @BENNASR
    en fait,l ecriture {1;2} (ensemble et pas un couple) veut dire que pour les colonnes 2 et 1 le critere voulu est satisfait alors pour l'autre cas seulement surla colonne 1 on a la satisfaction de cette comparaison , ((sur colonne 1 : on a 3 >2 relation qui relie a avec b ===> donc sur tab2 : ligne a et colonne b on recupere le numero de la colonne ou on effectue les calcul càd 1)
    et en fait je developpe tout un code sur vba en utilisant les macro, user form... y a t il une approche sans utiliser ces fonction excel de comparaison!?

    @joe.levrai
    merci d avoir répondu !
    en fait je suis obligée de continuer avec vba! car c est tout un algorithme à programmer et ce n 'est qu'une etape !
    donc comment le faire en vba ! sans utiliser les foncions excel!??

Discussions similaires

  1. Comparaison des valeurs des lignes d'un tableau excel
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/07/2013, 18h03
  2. Code vba pour la suppression des lignes d'un tableau excel
    Par yosra_jemai dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2013, 09h11
  3. [HTML] Hauteur des lignes d'un tableau
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/03/2006, 10h46
  4. Cacher des lignes d'un tableau
    Par frechy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/07/2005, 12h05
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

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