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 :

Manipulation 2 tableaux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Fac
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Fac

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Par défaut Manipulation 2 tableaux
    Bonjour,

    Voilà je suis un jeune étudiant et je suis au tout début de mon apprentissage en VBA.

    Ci-dessous je vous met des copies d'écrans.

    Voila comme vous pouvez le voir j'aimerai que si la date et le matricule de l'employé est identique dans les 2 tableaux écrire le département du tableau bleu dans l'autre tableau. Et si possible comment faire si mes tableaux sont dans 2 feuilles différentes ?

    J'aimerai apprendre à le faire en vba et non en powerpivot.

    Voici le code que j'ai utilisé, mais il fonctionne pas

    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
    Sub boucle()
    Dim i As Integer
    Dim j As Integer
    i = 2
    j = 2
     
     
    For i = 2 To 19
     
        For j = 2 To 19
     
        If tableau14.Cells(i, 7) = tableau2.Cells(j, 1) And tableau14.Cells(i, 10) = tableau2.Cells(j, 4) Then
            tableau2.Cells(j, 5) = tableau14.Cells(i, 11)
            i = i + 1
        End If
     
        If Not tableau14.Cells(i, 7) = tableau2.Cells(j, 1) And tableau14.Cells(i, 10) = tableau2.Cells(j, 4) Then
     
            j = j + 1
     
        End If
     
     
        Next
     
    Next
     
     
    End Sub
    Nom : Capture.PNG
Affichages : 238
Taille : 238,4 Ko

    Bien cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

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

    Pour que tu ais plus de chance de réponses, mets plutôt des copies d'écrans de ton fichier car un bon nombre de personnes sur ce forum n'ouvre pas les pièces jointes.

    Concernant ton souci :
    Pourquoi, alors que tu es dans une boucle For ... Next, ajoutes-tu 1 à i (pareil pour j) alors qu'il va déjà prendre plus 1 à la fin de la boucle ?

    Pour tes if :
    Plutôt que de faire deux if, fais-en qu'un seul en suivant la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if 'ton test then
    'Si besoin : Elseif 'ton second test then
    else: 'Au cas où aucun de tes tests ne seraient respectées
    end if

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Fac
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Fac

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Par défaut
    Merci pour ta réponse. Je modifie mon post de suite afin de mettre une capture.

    Je pensais que c'était comme en Java ou il faut quand même qu'on affiche notre incrémentation.
    Du coup j'ai suivi tes conseils, mais ça fonctionne toujours pas (erreur d’exécution 424 Objet requis).

    J'ai fait deux boucles afin de parcourir mes deux tableaux pour que lorsqu'il trouve une ligne avec la même date et le même matricule sur les deux tableaux il copie et colle la direction du tableau bleu dans celui du tableau vert. Evidemment dans la ligne correspondante. Ainsi de suite jusqu'à qu'il y ait plus aucune possibilité.

    Mais visiblement j'arrive pas à exprimer ce que je veux correctement aha

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Bizzbizz93 Voir le message
    J'aimerai apprendre à le faire en vba et non en powerpivot.
    Plus simplement, une simple fonction RECHERCHEV() ferait ça aussi bien et plus vite.

    Et si possible comment faire si mes tableaux sont dans 2 feuilles différentes ?
    Il suffit de précéder tes Range ou Cells de la référence de la feuille (Worksheet) concernée.
    Voir les exemple dans l'aide Excel : https://docs.microsoft.com/fr-fr/off....range(object)

    Voici le code que j'ai utilisé, mais il fonctionne pas
    "ça ne fonctionne pas", c'est un peu court pour expliquer un dysfonctionnement.

    Que se passe-t-il ?
    Est-ce que le résultat est différent de celui que tu attends ? Quelle est cette différence ?
    Est-ce que ça génère une erreur ? Quelle est le message d'erreur et qu'elle est la ligne de code indiquée par le débugage ?

    Citation Envoyé par Bizzbizz93 Voir le message
    Je pensais que c'était comme en Java ou il faut quand même qu'on affiche notre incrémentation.
    On incrémente la variable dans une boucle While ou Do mais la particularité de la boucle For, c'est qu'elle fait elle-même son incrémentation.
    Lire ça : https://docs.microsoft.com/fr-fr/off...next-statement
    Et ça : http://silkyroad.developpez.com/vba/boucles/

    Du coup j'ai suivi tes conseils, mais ça fonctionne toujours pas (erreur d’exécution 424 Objet requis).
    Remets ton nouveau code (encadré de balise CODE et non QUOTE) et indique quelle ligne est désignée par le débugage.

    J'ai fait deux boucles afin de parcourir mes deux tableaux pour que lorsqu'il trouve une ligne avec la même date et le même matricule sur les deux tableaux
    La seconde boucle serait avantageusement remplacé par la méthode Find de Range.
    https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    heu allo!!!
    error 1:dis moi un peu tu crois faire quoi avec If tableau14.Cells(x,y) ou tableau2.cells(x,y)
    error 2:
    dis moi un peu par exemple quelle est l'address de la cellule (i,j) des deux tableau
    si par exemple i=2 et j=10

    tu manipule tes tableau structurés comme un range OK si tu veux mais alors prend l'indexage (ligne/colonne) comme tel par le parent sheets
    .....
    bref au regard du code, il n'y a rien a garder car au final perso je ne sais pas ce que tu veux faire
    je suis étonné que l'on ne te l'est pas fait remarqué

    pour te donner une idées de tes erreur aussi nombreuses que le nombre de lignes de code, tu dis ;

    déjà tableau14 tout seul comme ca ne veut rien dire
    ensuite j'aimerais bien savoir ou tu a mis les colonnes(6,7,8,9,10) de ton tableau14
    pour ton information la cellule que tu vise c'est la sheets("Feuil2").cells(i,10) ce qui n'est pas la meme chose

    ensuite

    pour info encore par exemple
    ta cellule(i,10)du sheets("Feuil2")
    c'est la range("tableau14").cells(i-1,5)

    tu a un tuto sur les tableaux structurés va le potasser et reviens en ayant compris comment ca fonctionne
    la en l'état je pige rien a tes intentions

    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Manipulation des tableaux
    Par driss80 dans le forum Fortran
    Réponses: 4
    Dernier message: 18/01/2008, 09h51
  2. manipulation des tableaux
    Par amine556 dans le forum Informix
    Réponses: 4
    Dernier message: 26/11/2007, 16h20
  3. Problème de manipulation de tableaux
    Par proff dans le forum Pascal
    Réponses: 8
    Dernier message: 01/04/2007, 11h07
  4. Manipulation de tableaux de tableaux
    Par vargasvan dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2006, 14h54
  5. [Tableaux] Manipulation de tableaux
    Par orus8 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2005, 16h10

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