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 :

Transférer des données dispersées dans un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut Transférer des données dispersées dans un tableau
    Bonjour,
    Je suis nouveau sur ce forum et pour être très clair avec vous tous, chers experts, je ne suis pas du tout à votre niveau !!! Je ne maîtrise malheureusement pas du tout VBA, je n'y comprends rien...
    Par contre, je m'éclate avec les formules de base, j'aime bien améliorer mes connaissances et je les mets de + en + en pratique pour faciliter la vie de mes collègues.

    Mon problème pour lequel j'ai besoin d'aide est le suivant, j'ai créé :
    1/ un onglet "Listes" qui contient quelques colonnes diverses de renseignements.
    2/ un onglet "Renseignements" qui ressemble à une page toute grise dans laquelle il y a quelques cases dispersées à renseigner de différentes manières :
    - un champ "date du jour" automatique
    - des champs "texte"
    - des champs qui se renseignent automatiquement en fonction du contenu d'un précédent champ "texte"
    - un champ avec une flèche qui ouvre une liste à choix multiple
    - des colonnes dans lesquelles on peut mettre "X" en face d'une case texte qui a une information juste.
    - une case à cocher pour une fonction macro qui permettrait de valider/transférer les données des onglets dans un tableau d'un 3ème onglet

    Jusque là, tout fonctionne correctement.

    Mon problème est le suivant :
    Plusieurs fois par jour ma collègue va renseigner l'onglet "Renseignements" et je souhaite qu'à chaque fois qu'elle clique sur le bouton de validation, automatiquement, les infos des différentes cases dispersées soient copiées, dans un ordre précis, dans la 1ère ligne "vide" du tableau de mon 3ème onglet "Relevés". Ainsi je pourrai faire des statistiques lorsqu'il y aura beaucoup de relevés.

    Comment faire ? Quelles sont es différentes solutions ?
    Pouvez-vous m'aider SVP ?

    Attention, s'il faut passer par VBA, merci de bien m'expliquer, je ne m'y suis jamais intéressé donc je n'y comprends rien...

    Cordiales salutations
    Doonynat74

  2. #2
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    bonjour,
    avec VBA ce ne sera pas un problème êtes vous prêt à faire le grand pas...
    si c'est le cas on va vous aidez, mais pas faire le job a votre place
    donc dans votre cas il suffit de liéer le bonton avec la macro pour que cela tourne.
    pour la macro elle même, commencez a enregistrer votre macro avec le bouton "enregistré une macro" dans l'onglet "dévellopeur" dans le ruban en réalisant les copier coller.
    cela permet de voir ensuite le code enregistré.
    il faudra ensuite ajouter un astuce pour qu'en suite cela se colle automatiquement dans la première case vide.
    dans l'attente de vos premiers essais.

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Bien sûr je suis prêt à franchir le pas et je vous remercie d'avance de m'y aider !
    Voilà ce que j'ai déjà réussis à faire ce matin avec VBA : (Ne riez pas, je débute...)
    1/ Depuis l'onglet "Relevés" qui contient mon tableau récapitulatif, j'ai commencé par ajouter un bouton qui me permets de revenir directement dans la bonne case du futur enregistrement à faire de l'onglet "Renseignements" ! Et ca marche...
    2/ Depuis l'onglet "Renseignements" qui contient toutes les cases dispersées que je souhaite enregistrer dans mon tableau de l'onglet "Relevés", j'ai ajouté une macro au bouton que j'avais et, dans un 1er temps, une partie des cases se sont correctement copiées/collées.
    J'ai fait plusieurs simulations et c'est bon, ça fonctionne, à chaque fois, ce sont les bons renseignements qui sont transférés. C'est bien non !?

    Maintenant, il y a d'autres difficultés à surmonter :
    - dans l'onglet "Renseignements" j'ai 2 listes distinctes d'infos diverses. Pour chacune de ces 2 listes, ma collègue devra mettre un "X" devant l'info principale à enregistrer. Il y a donc 2 informations issues d'une case variable à copier/coller également dans la ligne du tableau de l'onglet "Relevés".
    EX: ma première liste est dans la table_matrice G9:G31. La 1ère colonne de cette table est celle où ma collègue mettre un "X" devant l'info à copier dans les enregistrements. Par déduction, la 2ème colonne de cette table contient une série d'infos potentiellement transférables dans le tableau des relevés. La 2ème liste est construite de la même manière de J9 à K31.
    Je sais faire avec les formules basique les RECHERCHEV et transférer un renseignement mais là, avec une macro, comment faire ?

    - la mise en page (police d'écriture, couleurs des cases...) est différente dans l'onglets "Relevés". Comment faire pour que les copier/coller ne concernent que les infos et pas les mises en page ? (Dans la macro j'ai enregistré avec Ctrl/C - Ctrl/V, peut-être que ce n'est pas la bonne manière !?)

    - Une fois que la 1ère ligne du tableau est renseignée, enregistrée, comment faire pour que le 2ème clique sur le bouton "Enregistrement" vienne renseigner la 2ème ligne du tableau ? Et ainsi de suite...

    Je suppose que l'on va faire étape après étape mais je ne voulais rien oublier dans mes réflexions de ce matin !

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    continuons donc...
    et bravo pour vos premiers résultats, pour ma part j'ai toujours ce petit plaisir quand la macro se déroule comme on le souhaite

    pour coller et copier que la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A1").Copy
    Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
             :=False, Transpose:=False
    le _ est jsute là pour la ligne ne soit pas trop longue mais on pourrait très bien écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    mais ce code, comme pour la mise en forme, on peut le voir en enregistrant le collage spécial!

    pour les autre problème, il serait bien de mettre le code, ce qui nous permet de mieux visualiser ce que vous avez fait...

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre explication mais là, ça se complique pour moi !
    Dois-je comprendre que je dois transformer ma 1ère macro de cette façon ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("D12").Select
    Selection.Copy
    Sheets("Relevés").Select
    Range("A3").Select
    ActiveSheet.Paste
    Sheets("Renseignements").Select
    Il y a 4 copier/coller de la sorte à la suite dans ma macro.

    Modification supposée/comprise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("D12").Select
    Selection.Copy
    Sheets("Relevés").Select
    Range("A3").Select
    ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Renseignements").Select
    Et je répéterais donc 4x cette modification ?

  6. #6
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    attention pour afficher du code il faut cliquer sur le bouton # et mettre le code entre les deux balises.
    pour votre code c'est les joie de VBA... mais dans le future vous apprendrez à simplifier les macro, mais n'allons pas trop vite.
    première remarque éviter au max les "Select" qui ralentisse les macro
    votre macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("D12").Select
    Selection.Copy
    Sheets("Relevés").Select
    Range("A3").Select
    ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("Renseignements").Select
    ce que je vous propose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("D12").Copy
    Sheets("Relevés").Range("A3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    c'est déjà mieux, non

  7. #7
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Alors oui c'est beaucoup mieux, beaucoup plus simple et chose incroyable (pour moi !), ça marche !!!
    Les transferts de données sont justes et la mise en page de mon tableau ne change pas, c'est super.
    1ère étape réussie, merci.
    Par contre, je n'ai pas compris votre phrase : "attention pour afficher du code il faut cliquer sur le bouton # et mettre le code entre les deux balises."
    Dans l'attente de vos instructions pour la suite, cordiales salutations

  8. #8
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    oui, je me suis dit après coup que je n'avais pas été clair
    l'instruction est quand vous postez un message sur le site, il faut cliquer sur le bonton "#" et tappez votre code entre les deux balises qui se sont affichées. cela permet de mettre votre code dans un tableau bien visible (comme dans mes messages). mais il est clair que cela n'a rien à voir avec le code tappez dans VBA
    pour la suite si j'ai bien compris vous voulez que les données se positionnent toutes seules en dessous de celles copiées lors du dernier lancement de la macro? si c'est le cas commencez à jouer avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Paste.End(xlDown).Offset(1, 0)
    qui permet de trouver la dernière case utilisée (.end)dans le colonne en dessous de A1(xldown) et décaler cette selection (Offset) de 1 contre en bas (1,0)

  9. #9
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    je ne sais pas pourquoi, mais d'un coup je me suis dit mince j'ai fait une erreur... avec ce code cela devrait mieux aller.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").End(xlDown).Offset(1, 0).Paste
    ou si tu veux faire un collage spécial
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    tu remplace le simple Paste par ce code (mais cela du doit commencer a avoir assimiler la combine du "." qui assemble les actions.... )

  10. #10
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    J'ai essayé plusieurs façon d'intégrer ce nouveau code dans ma macro mais sans résultat ! A chaque fois, une des lignes de code se surligne en jaune et la macro ne fonctionne plus...
    C'est une question de logique de programmation VBA je suppose et c'est justement là que mes connaissances me font défaut !
    Je veux bien continuer à chercher pour comprendre cette logique car comme vous me l'avez dit, vous n'allez pas faire la macro à ma place et je le conçois mais, pouvez-vous me donner une axe de réflexion SVP ?

  11. #11
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    Dommage que vous n'indiquiez pas sur quelle ligne la macro bug, cela permet de mieux comprendre le problème.
    Connaissez-vous le débugage: on peu faire avancer la macro pas à pas pour voir ce qui ce passe; il suffit de cliquer n'importe où dans le code VBA et puis de faire "F8", deuxième solution et de selectionner un endroit souhaité du code est de faire "Ctrl + F8" pour que la mcro tourne jusqu'a l'endroit selectionné, très pratique
    pour votre problème, une petite astuce que j'ai oublié de préciser: je ne sais pas pourquoi mais il faut qu'il y ait au moins deux lignes remplies au dessus de la colonne! on peut mettre deux astérisques dans la colonne de la selection (dans mon exemple de code: dans A1 et A2) par exemple cela suffit.
    mais sans votre code et sans savoir sur quelle ligne cela bloque je ne peux malheureusement pas vous aidez plus.

  12. #12
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Désolé de répondre tardivement, mes journées sont bien pleines... De plus, j'ai oublié d'actualiser la page et je n'ai pas vu votre message intermédiaire !
    A aujourd'hui, j'ai reconstruit la macro à l'étape où ça fonctionnait, le 19/11 à 11h38, mais ça ne marche plus !
    Voici ce qui apparaît, et c'est la 1ère ligne qui se met en jaune : "Sub Macro....."


    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
    Sub Macro_enregistrement_rhabillage()
    '
    ' Macro_enregistrement_rhabillage Macro
    '
     
    '
        Range("D12").Copy
        Sheets("Relevés").Range("A3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("D15").Copy
        Sheets("Relevés").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("D18").Copy
        Sheets("Relevés").Range("C3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("D24").Copy
        Sheets("Relevés").Range("E3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Range("M9").Copy
        Sheets("Relevés").Range("H3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Sheets ("Relevés")
    End Sub

  13. #13
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    pas de problème on est pas dans un concours de vitesse
    le problème vient de la dernière ligne, il y a un tout seul, à supprimer et cela devrait remarché
    par contre je me permet insisté (se sont les règles du forum) de mettre votre code dnas le balise comme expliqué plus haut!

  14. #14
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Effectivement ce matin quand j'ai relancé ma macro, celle-ci m'a sorti l'erreur sur la dernière ligne comme vous le mentionnez.
    En fait, ce que je souhaite faire après le transfère des données, c'est une vérification du bon enregistrement de la ligne par l'ouverture de la page "Relevés" pour une simple vérification visuelle. Après, sur cette page, il y a un bouton de retour sur la page de renseignements et celui-ci fonctionne bien.
    Pour ce qui est des balises je veux bien mais je n'ai pas réussi avec la touche # du clavier mais je viens de voir qu'il y avait cette touche dans les commandes de message...
    Voici donc ce que je viens de faire ce matin et ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Relevés").Select
    Est-ce Juste maintenant dans la façon de faire sur ce forum ?

  15. #15
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    J'ai reçu un message du modérateur pour ces balises... d'après l'exemple indiqué, il me semble avoir fait juste tout à l'heure dans mon précédent message !
    Alors continuons maintenant...
    J'ai réussi à faire la modification de macro qui va chercher à chaque enregistrement la première ligne vide du tableau. J'ai mis des astérisques comme expliqué et tout fonctionne bien après plusieurs simulations, j'ai déjà 5 ou 6 lignes de mon tableau qui sont presque en totalité remplies !

    Voici ce que j'ai écrit dans mes lignes de macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("D12").Copy
        Sheets("Relevés").Range("A1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Difficulté suivante : Il me reste 2 cases à remplir dans mon tableau "Relevés" MAIS, l'information à transférer dans ces 2 cases a une position variable dans "Renseignements" ! En fait, j'ai 2 mini tableaux construits de la façon suivante :
    - Tableau de 2 colonnes et 23 lignes
    => 1ère colonne vide dans laquelle on va mettre un "X" dans 1 seule case, en face d'une information,
    => 2ème colonne contenant une série d'informations différentes potentiellement transférables si jugées correctes, justes, avec le "X" devant.

    Je sais faire des RECHERCHEV dans les formules simples d'Excel mais pour une macro...??? Comment faire SVP ?

  16. #16
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    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 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonsoir
    Plusieurs fois par jour ma collègue va renseigner l'onglet "Renseignements" et je souhaite qu'à chaque fois qu'elle clique sur le bouton de validation, automatiquement, les infos des différentes cases dispersées soient copiées, dans un ordre précis, dans la 1ère ligne "vide" du tableau de mon 3ème onglet "Relevés". Ainsi je pourrai faire des statistiques lorsqu'il y aura beaucoup de relevés.
    la lecture de cette paragraphe, à mon modeste avis , tu dois ajouter des instruction sous le bouton de validation de votre collègue. Ce bouton fais les instructions demandées et en même temps va sur votre onglet si sont sur le même dossier et coller les données après la dernière ligne de ton onglet
    Pour avancer il faut savoir si les deux onglets sont sous le même dossier??
    Les informations que ton collègue fait la mise à jour doit être sur une nouvelle ligne ou parfois il faut modifier des enregistrements existants??
    Ce n'ai qu'une tentative de données un coup de pousse mais dans la limite de mes connaissance de débutant VBA
    Bonne continuation
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  17. #17
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Merci Bennasr mais désolé, je n'ai pas pu avancer plus !
    Beta007 une idée !?

  18. #18
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Voici la formule que j'ai essayé mais la 1ère ligne apparaît en jaune et le transfert de données ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Application.VLookup("X", [G:H], 2, 0).Copy
        Sheets("Relevés").Range("H1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Pour infos :
    Matrice dans les colonnes G et H, exactement de G9 à H31
    Valeur recherchée dans la matrice : X
    Colonne de la valeur recherche "X" : G
    Information à transférer : C'est du texte dans la colonne H, exactement le texte en face du "X".

    Merci pour votre aide !

  19. #19
    Membre régulier
    Homme Profil pro
    Responsable de production
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 124
    Points
    124
    Par défaut
    hello,
    je ne suis pas très fort en formule dans VBA, mais ce qu'il me semble est que tu copies "rien" car ta formule met une valeur à l'endroit de la formule, alors que là tu "copies la formule".
    une autre solution que j'emploie beaucoup plus car je la trouve plus souple est les boucles:
    tu dis à la macro d'aller voir sur la première cellule, si les conditions sont juste tu fais l0action sinon tu passe à la ligne suivante, ainsi de suite.
    dans ton cas tu dirais regarde dans la première colonne, si tu trouve "x" tu copies la cellule à côté sinon tu passes à la ligne suivante.
    voilà si les boucles t'intéresses regarde avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    do while Cells(ligne,x)<>"" 'instruction de quand la boucle doit s'arrété en général de ce genre qui dis: tu tournes tant que la cellule n'est pas vide
    'ton instruction de contrôle avec des IF
    ligne=ligne+1'pour faire avancer ta boucle de ligne en ligne
    loop' renvoie en début d'instruction pour refaire la boucle si les conditions sont toujours ok

  20. #20
    Candidat au Club
    Homme Profil pro
    Directeur Qualité
    Inscrit en
    Novembre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Tous mes bons voeux à ceux qui vont me lire !
    Pour donner une suite à ma recherche, je n'ai toujours pas trouvé la solution à mon problème en essayant de passer par une boucle !
    Récapitulatif :
    Je recherche le code VBA pour atteindre "x" dans une case variable entre G9 et G31 de mon tableau et ensuite, copier un texte figé, lisible en face du "x" trouvé, qui se trouve donc entre les cases H9 et H31 et aller inscrire ce texte, sans mise en forme , dans un autre tableau d'un onglet différent.

    Voici ce que j'ai programmé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Compteur As Integer
        Dim Cel As Range
        Set Cel = Range("G9")
        Compteur = 1
        Do While Compteur = Compteur + 1
        Loop While Cel.Offset(Compteur) <> ""
        Cel.Offset(Compteur) = "x"
        Exit Do
        Range(Compteur, 1).Copy
        Sheets("Relevés").Range("H1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Loop
    En fait, lorsque je lance la macro, rien ne se passe !
    Quelqu'un pourrait-il m'aider ?

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/12/2009, 13h28
  2. Réponses: 1
    Dernier message: 28/11/2009, 19h20
  3. [ZF 1.6] Affichage des données récupérées dans un tableau
    Par MaT$oN dans le forum Zend_Db
    Réponses: 4
    Dernier message: 10/03/2009, 09h32
  4. Réponses: 3
    Dernier message: 24/08/2008, 03h30
  5. Réponses: 1
    Dernier message: 09/07/2007, 17h13

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