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 :

recuperer ,en code VBA,les valeurs d'une matrice dans une autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut recuperer ,en code VBA,les valeurs d'une matrice dans une autre feuille
    bonsoir a tous
    mes connaissances en VBA etant limitees
    j'aurai besoin de votre aide pour le probleme suivant

    j'ai 1 feuille F1avec la matrice suivante
    a titi toto
    b lala rere
    c momo fafa

    et une autre feuille F2 avec une colonne "A" deja remplie

    A B C
    a titi toto
    c momo fafa ect..
    c
    b
    b
    a
    c
    comment faire pour recuperer dans F2 en colonne C et D les valeurs de la matrice
    bien sur il y a la fonction VLookup
    mais pour des questions de securite je dois le faire en VBA
    quelqu'un a t-il une idee
    merci pour votre aide
    dalo02

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Bonjour a tous
    j'ai fais des recherches et enfin trouve le code VBA qui va super bien
    juste une question
    comment faire afin i et j s'arrete a la derniere ligne
    la longueur des 2 listes varient avec le temps
    merci par avance
    a+dalo02

    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
    Sub copiermatrice ()
    Dim i As Integer, j As Integer
     
    For i = 1 To 2800 'Itération de la ligne 1 à 2800 pour le Classeur 1
         For j = 1 To 70 'Itération de la ligne 1 à 70 pour le Classeur 2
         'Si la cellule(i,1) est egale à la cellule(j,1) alors
         'On copie la valeur de la cellule (j,2) dans la cellule (i,2)
              If Sheets("F1").cells(i, 1).Value = Sheets("F2").cells(j, 1).Value Then
     
                Sheets("F1").cells(i, 2).Value = Sheets("F2").cells(j, 2).Value
                Sheets("F1").cells(i, 3).Value = Sheets("F2").cells(j, 3).Value
     
                   j = 71 'Nous permet de sortir de la boucle une fois la valeur trouvée
              Else
              'Sinon on met la cellule (i,2) à 0
               Sheets("F1").cells(i, 2).Value = "???"
              End If
         Next
         Next
    End Sub

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Bonjour,

    Pour chercher le nombre de ligne de ta feuille, utilise la fontion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim i as Long
    i = .Cells(.Rows.Count, 1).End(xlUp).Row
    i prendra alors la valeur du nombre de ligne en colonne 1

    Cdt
    Dorian

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    bonjour dodo69
    merci pour la reponse j'avais deja essaye mais cela ne marche pas
    on a 2 fois la meme variable i,en plus vba fait la tete sur "rows"
    qq a t-il une astuce?
    je continue a chercher.
    cordialement
    dalo02

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    il y a un tuto sur comment trouver la derniere ligne écris par ouskel'nord dans le forum contribuez

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    bonsoir a tous
    j'ai enfin trouve la solution
    je vous livre le resultat

    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
    Sub copiermatrice()
     
    Dim i As Integer, j As Integer
    Dim DerLigi As Long
    Dim DerLigj As Long
    DerLigi = Sheets("f1").Cells(rows(1).Cells.Count, 1).End(xlUp).Row 'Récupère la dernière ligne remplie
    DerLigj = Sheets("f2").Cells(rows(1).Cells.Count, 1).End(xlUp).Row 'Récupère la dernière ligne remplie
     
    For i = 1 To DerLigi 'Itération de la ligne 1 à la derniere ligne pour le Classeur 1
         For j = 1 To DerLigj 'Itération de la ligne 1 à la derniere ligne pour le Classeur 2
         'Si la cellule(i,1) est egale à la cellule(j,1) alors
         'On copie la valeur de la cellule (j,2) dans la cellule (i,2)
              If Sheets("F1").Cells(i, 1).Value = _
              Sheets("F2").Cells(j, 1).Value Then
     
                Sheets("F1").Cells(i, 2).Value = Sheets("F2").Cells(j, 2).Value
                Sheets("F1").Cells(i, 3).Value = Sheets("F2").Cells(j, 3).Value
     
                   j = DerLigj 'Nous permet de sortir de la boucle une fois la valeur trouvée
              Else
              'Sinon on met la cellule (i,2) à ???
               Sheets("F1").Cells(i, 2).Value = "???"
              End If
         Next
         Next
    End Sub
    a+
    cordialement
    dalo02

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

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. Réponses: 3
    Dernier message: 13/01/2009, 16h55
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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