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 :

Copier-coller des cellules pour alimenter un tableau [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Copier-coller des cellules pour alimenter un tableau
    Bonjour,

    Je vous expose la situation et il y aura le code en fin de message.

    J'ai un résultat de calcul en S14 (calcul d'une moyenne) - De même pour les cellules S20 et S27 - ces cellules ne changent pas mais leur contenu varie à chaque nouvelle série d'entrées

    Les entrées sont les réponses d'un questionnaire et le but est de traiter environ une trentaine de questionnaires. A chaque participant correspond le triplet (S14-S20-S27)

    Je renvoie la valeur de chaque cellule respectivement en W2-W3-et W4.
    en sortie au participant 1 correspond le triplet (W2-W3-W4)


    Ma macro fonctionne bien pour un seul participant (j'ai procédé par un enregistrement 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
    19
    20
    21
    22
    Option Explicit
    Sub Traitement()
    ' Traitement Macro
    ' Touche de raccourci du clavier: Ctrl+h
    'copie 1ere valeur
        Range("S14").Select
        Selection.Copy
        Range("W2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    'copie 2eme valeur
        Range("S20").Select
        Application.CutCopyMode = False
        Selection.Copy
    'copie 3eme valeur
        Range("W3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveWindow.SmallScroll Down:=6
        Range("S27").Select
        Application.CutCopyMode = False
        Selection.Copy
    Mais comment modifier le code pour qu'au participant 2 je puisse copier les valeurs (S14-S20-S27) vers (X2-X3-X4) ? et faire cela pour environ 30 participants

    Là est mon problème d'automatisation de mon programme excel et sur le net aucune solution qui corresponde vraiment à mon cas.

    Cela est pour mon travail de qualiticien en Centre de Lutte Contre le Cancer qui est une clinique à but non lucratif. (et oui çà existe !!!!) - taper CLCC sur le net
    En final ce programme excel va me conduire à un indicateur qualité.

    Je vous remercie pour votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 461
    Points : 707
    Points
    707
    Par défaut
    Bonjour à tous,

    Un essai avec un petit code fait à la hate (en supposant que les cellules S14, S20 et S27 changent selon le numéro de participant dans la cellule A1):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Traitement()
    Dim I As Integer
    For I = 1 To 30
      [A1] = I
        Cells(2, 21 + I).Value = [S14].Value
        Cells(3, 21 + I).Value = [S20].Value
        Cells(4, 21 + I).Value = [S27].Value
    Next I
    End Sub
    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Copier-coller des cellules pour alimenter un tableau
    Bonjour et merci pour la réponse,

    Ce code ne peut pas marcher car il propose une boucle de 1 à 30.

    Je m'explique:
    Pour le participant 1 je remplis les réponses. Une fois le questionnaire rempli mon programme me donne le triplet (S14;S20;S27).
    Le code que j'ai créé me permet de copier de former l'autre triplet (W2;W3;W4)

    Je sauvegarde

    Je prend le second questionnaire; je remplis les réponses et j'obtiens un nouveau triplet (S14;S20;S27) --- si la position est identique les valeurs diffèrent du premier participant.

    Je souhaite que mon code me permette de copier les valeurs du triplet vers un nouveau triplet (X2;X3;X4) et ainsi de suite tant que j'ai des questionnaires.

    En final j'aurais une matrice W2:X4 (pour deux participants)

    Comment modifier le code que j'ai créé pour obtenir ce résultat?

    Il me faudrait une solution clé en main pour deux participant par exemple.

    Merci de votre aide

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 519
    Points : 16 451
    Points
    16 451
    Par défaut
    Bonjour

    Citation Envoyé par DidierBoz Voir le message
    ...
    Pour le participant 1 je remplis les réponses. Une fois le questionnaire rempli mon programme me donne le triplet (S14;S20;S27).
    Le code que j'ai créé me permet de copier de former l'autre triplet (W2;W3;W4)
    Je sauvegarde
    Je prend le second questionnaire
    Il est où ce second questionnaire ? C'est l'élément clé !
    Tu ne dis pas si tu as un ou plusieurs classeurs...

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Voilà un petit code qui cherche la prochaine colonne disponible pour y copier tes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Sub Traitement()
     Dim sh As Worksheet
     Dim ic As Integer 'Colonne destination
     Set sh = ThisWorkbook.Worksheets("Feuil3") '>>>>>> A ADAPTER >>>>>> Préciser la feuille de calcul concernée 
     ic = sh.Range("W2").Column 'Récupére numéro de colonne W..
     While Application.CountA(sh.Range(sh.Cells(2, ic), sh.Cells(4, ic))) <> 0 'Se position sur prochaine colonne libre
       ic = ic + 1
     Wend
     Debug.Print "Destination" & sh.Cells(2, ic).Address
      sh.Cells(2, ic) = sh.Range("S14")
      sh.Cells(3, ic) = sh.Range("S20")
      sh.Cells(3, ic) = sh.Range("S27")
    End Sub

  6. #6
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour
    Il est où ce second questionnaire ? C'est l'élément clé !
    Tu ne dis pas si tu as un ou plusieurs classeurs...

    Bonjour,

    Le questionnaire est un formulaire papier que les participants ont rempli; je le prends dans ma petite mimine et je reporte les valeurs dans mon tableau Excel.


  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par bbil Voir le message
    Voilà un petit code qui cherche la prochaine colonne disponible pour y copier tes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Sub Traitement()
     Dim sh As Worksheet
     Dim ic As Integer 'Colonne destination
     Set sh = ThisWorkbook.Worksheets("Feuil3") '>>>>>> A ADAPTER >>>>>> Préciser la feuille de calcul concernée 
     ic = sh.Range("W2").Column 'Récupére numéro de colonne W..
     While Application.CountA(sh.Range(sh.Cells(2, ic), sh.Cells(4, ic))) <> 0 'Se position sur prochaine colonne libre
       ic = ic + 1
     Wend
     Debug.Print "Destination" & sh.Cells(2, ic).Address
      sh.Cells(2, ic) = sh.Range("S14")
      sh.Cells(3, ic) = sh.Range("S20")
      sh.Cells(3, ic) = sh.Range("S27")
    End Sub
    Bonjour,
    Est-ce que ce code remplace celui que j'ai créé?
    Cordialement

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    oui.. remplace tout ton code par cela ..

  9. #9
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par bbil Voir le message
    Voilà un petit code qui cherche la prochaine colonne disponible pour y copier tes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Sub Traitement()
     Dim sh As Worksheet
     Dim ic As Integer 'Colonne destination
     Set sh = ThisWorkbook.Worksheets("Feuil3") '>>>>>> A ADAPTER >>>>>> Préciser la feuille de calcul concernée 
     ic = sh.Range("W2").Column 'Récupére numéro de colonne W..
     While Application.CountA(sh.Range(sh.Cells(2, ic), sh.Cells(4, ic))) <> 0 'Se position sur prochaine colonne libre
       ic = ic + 1
     Wend
     Debug.Print "Destination" & sh.Cells(2, ic).Address
      sh.Cells(2, ic) = sh.Range("S14")
      sh.Cells(3, ic) = sh.Range("S20")
      sh.Cells(3, ic) = sh.Range("S27")
    End Sub
    Merci de ne pas tenir compte de mon message; çà marche du feu de D...
    A l'avant dernière ligne j'ai corrigé sh.cells (4...) et non 3.

    Je vous remercie de votre aide.
    Comme généralement je ne me contente pas d'une solution sans comprendre ce que je fais, pourriez-vous m'expliquer ligne par ligne en dans la langue de Shakespare non de Molière ce que le code fait?
    Je suis en train d'apprendre en lisant un tutorial donc je vais progresser, mon but n'étant pas de devenir un spécialiste.

    Merci à vous encore un fois.
    a bientôt sur ce forum car j'aurais certainement encore besoin de la communauté pour mon projet de tableau de bord qualité
    DidierBoz

  10. #10
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 461
    Points : 707
    Points
    707
    Par défaut
    Bonjour à tous,

    Une autre code plus simple (pas de boucles)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Sub Traitement()
    Dim I As Integer
      I = Application.WorksheetFunction.CountA(Range("W2:IV2")) + 1
        Cells(2, 22 + I).Value = [S14].Value
        Cells(3, 22 + I).Value = [S20].Value
        Cells(4, 22 + I).Value = [S27].Value
    End Sub
    Cordialement

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    BOnjour,

    Je suis presque dans la même situation.

    (Feuil "synthese") J'ai un tableau à deux colonnes (N9 et 09) et ces valeurs sont mises à jour avec un bouton que j'ai ajouté.
    J'aimerais créer un bouton qui puisse envoyer les valeurs des cellules N9 et O9 dans les cellules A3 et B3 de la feuille "Graph".

    Le problème c'est que les valeurs N9 et 09 d'une journée à l'autre peuvent changer donc j'aimerais cliquer sur le bouton pour les ajouter à la suites de mes premières valeurs enregistrées donc en A4 et B4,et ainsi de suite

    Pouvez vous m'aider
    je vous remercie par avance

    François

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

Discussions similaires

  1. [XL-2007] copier/coller des cellules vers une première ligne vide
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2011, 23h35
  2. [XL-2003] Copier coller des cellules
    Par damien29 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2011, 14h28
  3. Réponses: 4
    Dernier message: 28/04/2011, 15h50
  4. Copier coller des cellules excel ?
    Par Angelssen dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/02/2010, 12h42
  5. Réponses: 5
    Dernier message: 14/02/2006, 14h32

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