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 :

Remplissage d'une feuille avec des références similaires.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut Remplissage d'une feuille avec des références similaires.
    Bonjour à tous,

    J'ai une feuille sur laquelle il y a dans une colonne une série de références ordonnées (les mêmes références se suivent).

    Je veux remplir les autres colonnes de cette feuille à partir d'une autre dans laquelle il y a la même colonne avec les références mais desordonnées.

    Mon problème est que avec ce que j'ai programmé pour le moment, mes colonnes se remplissent, mais si 2 références sont les mêmes, leurs lignes sont remplies de facons identiques.

    En gros dès que mon programme trouve deux références qui sont identiques il remplit toutes les lignes là où ces références sont, alors que c'est pas forcément le cas dans la feuille source.

    J'espère avoir été clair.

    Voici ce que j'ai codé pour le moment.

    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
    For compteur = 4 To 600
    For ligne = 2 To 400
    If STDoK.Cells(compteur, 4).Value = STDiK.Cells(ligne, 8).Value Then
     
    STDoK.Cells(compteur, 4).Offset(0, -1).Value = STDiK.Cells(ligne, 8).Offset(0, -1).Value
    STDoK.Cells(compteur, 4).Offset(0, -2).Value = STDiK.Cells(ligne, 8).Offset(0, -2).Value
    STDoK.Cells(compteur, 4).Offset(0, -3).Value = STDiK.Cells(ligne, 8).Offset(0, -3).Value
    STDoK.Cells(compteur, 4).Offset(0, 1).Value = STDiK.Cells(ligne, 8).Offset(0, 1).Value
    STDoK.Cells(compteur, 4).Offset(0, 5).Value = STDiK.Cells(ligne, 8).Offset(0, 2).Value
    'STDoK.Cells(ligne, 4).Offset(0, 6) = "STD"
    'STDoK.Cells(ligne, 4).Offset(0, 7) = "EUR"
    STDoK.Cells(compteur, 4).Offset(0, 8).Value = STDiK.Cells(ligne, 8).Offset(0, 7).Value
    STDoK.Cells(compteur, 4).Offset(0, 9).Value = STDiK.Cells(ligne, 8).Offset(0, 8).Value
    STDoK.Cells(compteur, 4).Offset(0, 9).Value = STDiK.Cells(ligne, 8).Offset(0, 8).Value
     
     
     
    End If
    Next compteur
    Next ligne
     
    End Sub

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonsoir

    En gros des que mon programme trouve deux references qui identiques il remplit toutes les lignes ou ces references sont alors que c'est pas forcement le cas dans la feuille source.
    il faudrait en premier lieu définir la ou les condition(s) pour éviter que la copie soit effectuée plus d'une fois car pour l'instant si X = Y c'est un peu juste.

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    En fait, j'ai une feuille ou j' ai des donnees du type :


    D.910001-C-20514117
    D.910001-C-20514117
    D.910001-C-20514117
    D.910001-C-20514117_Ergebnis
    D.910001-C-30512101
    D.910001-C-30512101
    D.910001-C-30512101_Ergebnis
    D.910001-C-30512313
    D.910001-C-30512313_Ergebnis


    Et une autre ou j' ai les references avec les informations correspondantes :

    D.910001-C-20514117 2010 84 Potzo
    D.910001-C-20514117 2010 35 Potzo
    D.910001-C-20514117 2009 29 Zyhack
    D.910001-C-30512101 2009 ...
    D.910001-C-30512101
    D.910001-C-30512313


    Donc le probleme c'est que je n'ai qu'une seule condition possible. A savoir Ref.feuille1 = Ref.Feuille2.

    Je pense qu'il faudrait creer un compteur sur la feuille contenant les infos qui s'incremente lorsqu'il a rempli une ligne de la feuille vierge de sorte que cette ligne ne soit plus utilisee. Mais mes tentatives ont ete vaines.

    EDIT : Dans les lignes Ergebnis, je somme certaines valeurs des lignes du dessus. Donc elles n'ont pas a etre remplies par ma macro.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    une solution en utilisant un pointeur

    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
     
    For compteur = 4 To 600
    For Ligne = 2 To 400
    If STDoK.Cells(compteur, 4).Value = STDiK.Cells(Ligne, 8).Value Then
     
      '## vérifier si la ligne a déja été utilisé
      If STDiK.Cells(Ligne, "Z") = "" Then
        STDoK.Cells(compteur, 4).Offset(0, -1).Value = STDiK.Cells(Ligne, 8).Offset(0, -1).Value
        STDoK.Cells(compteur, 4).Offset(0, -2).Value = STDiK.Cells(Ligne, 8).Offset(0, -2).Value
        STDoK.Cells(compteur, 4).Offset(0, -3).Value = STDiK.Cells(Ligne, 8).Offset(0, -3).Value
        STDoK.Cells(compteur, 4).Offset(0, 1).Value = STDiK.Cells(Ligne, 8).Offset(0, 1).Value
        STDoK.Cells(compteur, 4).Offset(0, 5).Value = STDiK.Cells(Ligne, 8).Offset(0, 2).Value
        'STDoK.Cells(ligne, 4).Offset(0, 6) = "STD"
        'STDoK.Cells(ligne, 4).Offset(0, 7) = "EUR"
        STDoK.Cells(compteur, 4).Offset(0, 8).Value = STDiK.Cells(Ligne, 8).Offset(0, 7).Value
        STDoK.Cells(compteur, 4).Offset(0, 9).Value = STDiK.Cells(Ligne, 8).Offset(0, 8).Value
        STDoK.Cells(compteur, 4).Offset(0, 9).Value = STDiK.Cells(Ligne, 8).Offset(0, 8).Value
     
        '## ici on écrit le pointeur
        STDiK.Cells(Ligne, "Z").Value = "x"
      End If
    End If
    Next compteur
    Next Ligne
     
    End Sub
    par contre il quelques petites choses à améliorer

    exemple il n'y a pas besoin d'utiliser Offset et une ligne telle que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STDoK.Cells(compteur, 4).Offset(0, -1).Value = STDiK.Cells(Ligne, 8).Offset(0, -1).Value
    peut être écrite directement comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    STDoK.Cells(compteur, 3).Value = STDiK.Cells(Ligne, 7).Value
    De plus je pense qu'a la place d'utiliser deux boucles For next il faudrait que tu n'en utilise qu'une et utiliser la fonction find pour aller plus vite mais ceci est une autre histoire.

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Par défaut
    Merci beaucoup ca marche nickel :=)

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

Discussions similaires

  1. Protéger une feuille avec des groupements
    Par Jycs84 dans le forum Excel
    Réponses: 0
    Dernier message: 29/05/2015, 13h32
  2. [XL-2007] Copier une feuille avec des TDC et les garder indépedant
    Par oekoniko dans le forum Excel
    Réponses: 3
    Dernier message: 09/07/2012, 11h54
  3. [AC-2003] Remplissage d'une ListBox avec des éléments d'un Recordset
    Par Sclarckone dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/08/2011, 13h40
  4. Impression d'une feuille avec des dessins
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/08/2007, 08h40
  5. [D7],[ADO] : ordonner une table avec des champs référencés
    Par iam dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/11/2006, 21h36

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