AIDE sur macro

Résolu
Bonjour,

J'ai besoin de votre aide je voudrais créer une macro qui copie une cellule faire un copiage spéciale dans une autre cellule en récupérant juste la valeur de la cellule d'origine et pouvoir exécuter cette macro sur plusiuer cellule les unes en dessous des autres sans effacer se qui à été saisi au fur à mesure .... merci d'avance je suis perdu!!!!!

12 réponses

  1. Merci bcp pour vos réponses et votre patience la macro fonctionne. Nicolas
    1. Ce qui bloque ce sont les noms des onglets à rallonge avec des espaces.

      Essayez de les simplifer (par exemple juste Calcul et Control) et de modifier la macro en conséquence...
      1. Bonjour,

        Vous serez t'il possible de m'en voyer un fichier avec la macro fonctionnelle car je n'arrive pas du tout à comprendre ce qui bloque. Merci

        COrdialement
        1. Sub ReporterValeurs()
          Dim FeuilBase As String, FeuilDest As String, PlageBase As Range, _
          ColDest As Integer, PlageDest As Range, LigneDest As Long

          'Nom de la feuille où se trouve les données à copier
          FeuilBase = "Calcul des temps perso" '(nom à changer)

          'cellules où se trouve les valeurs à copier
          Set PlageBase = Sheets(FeuilBase).Range("G3:N3")

          'Nom de la feuille qui va recevoir les valeurs
          FeuilDest = "Control pannel"
          'numéro de la 1ère Colonne dans laquelle on met les valeurs copiées
          ColDest = 2 '(=colonne B)

          'détermine la première cellule vide dans la feuille de destination
          If Sheets(FeuilDest).Cells(2, ColDest).Value = "" Then
          LigneDest = IIf(Sheets(FeuilDest).Cells(1, ColDest).Value = "", 1, 2)
          Else
          LigneDest = Sheets(FeuilDest).Cells("1", ColDest).End(xlDown).Row + 1
          End If

          'définit les cellules de destination
          Set PlageDest = Sheets(FeuilDest).Range(Cells(LigneDest, ColDest), Cells(LigneDest, ColDest + 7))

          PlageDest.Value = PlageBase.Value

          End Sub
          1. Bonsoir,

            J'ai encore besoin de votre aide sa ne marche toujours pas pour moi?

            Voilà textuellement ce que j'ai copié et effecté à un bouton qui se trouve sur la feuille "calcul des temps perso" ou se trouve les données que je voudrais copié; svp comment je dois procéder....merci beaucoup
            1. Oui, c'est sûrement le nom de la feuille de destination qui n'est pas correct. Il faut vérifier dans la ligne plus haut :

              FeuilDest = "Control pannel"
              1. Erreur d'execution "9"
                l'indicde n'appartient pas à la sélection

                Cela vous dit quelque chose?
                1. Je n'ai pas d'erreur en testant ... Y-a-t'il un message ?
                  1. Bonjour,
                    J'aurais jamis réussit à arriver jusque là sans vous merci reste juste un petit bug à ce niveau là lorsque je lance la macro dont je ne trouve pa la solution
                    Set PlageDest = Sheets(FeuilDest).Range(Cells(LigneDest, ColDest), Cells(LigneDest, ColDest + 7))

                    Merci bcp.
                    1. Oui, il faut un peu dépasser l'enregistreur de macros...
                      Voilà la procédure (juste changer le nom de la feuille qui contient les données à copier, j'ai laissé Feuil1 ne connaissant pas le nom effectif) :

                      Sub ReporterValeurs()
                          Dim FeuilBase As String, FeuilDest As String, PlageBase As Range, _
                          ColDest As Integer, PlageDest As Range, LigneDest As Long
                          
                          'Nom de la feuille où se trouve les données à copier
                          FeuilBase = "Feuil1"    '(nom à changer)
                          
                          'cellules où se trouve les valeurs à copier
                          Set PlageBase = Sheets(FeuilBase).Range("G3:N3")
                          
                          'Nom de la feuille qui va recevoir les valeurs
                          FeuilDest = "Control pannel"
                          'numéro de la 1ère Colonne dans laquelle on met les valeurs copiées
                          ColDest = 2  '(=colonne B)
                          
                          
                          'détermine la première cellule vide dans la feuille de destination
                          If Sheets(FeuilDest).Cells(2, ColDest).Value = "" Then
                              LigneDest = IIf(Sheets(FeuilDest).Cells(1, ColDest).Value = "", 1, 2)
                          Else
                              LigneDest = Sheets(FeuilDest).Cells("1", ColDest).End(xlDown).Row + 1
                          End If
                          
                          'définit les cellules de destination
                          Set PlageDest = Sheets(FeuilDest).Range(Cells(LigneDest, ColDest), Cells(LigneDest, ColDest + 7))
                          
                          PlageDest.Value = PlageBase.Value
                          
                          
                      End Sub
                      
                      1. Tout d'abord merci d'avoir pri le tps de me répondre. Est-il possible de concevoir une macro qui enregistreré sans la manip ctrl+c. J'explique se que je voudrai pouvoir faire.

                        J'ai 8 cellule à copié sur une feuille que j'ai appelé "calcul des temps perso" les données sont vouées à évoluer un grand nombre de fois ainsi je souhaiterai pouvoir enregistrer des que je clik sur un bouton ou meme sans bouton sur une autre feuille appelé "controlpannel" et ainsi construire un tableau. Je suis parti sur une macro qui fait la manip suivante :

                        Range("G3:N3").Select
                        Selection.Copy
                        Sheets("Control pannel").Select
                        Range("B3").Select
                        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                        End Sub

                        Pour la suite je n'ai aucune idée auriez vous une idée ou une autre méthode. Merci d'avance.
                        1. Macro à affecter à un bouton :

                          Sub Collage Spécial()
                          On Error GoTo Err:
                              Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                  :=False, Transpose:=False
                              Exit Sub
                          Err:
                              MsgBox "Rien à copier", vbCritical
                          End Sub


                          Fonctionnement :

                          Copie la cellule (Ctrl + C), puis va dans la cellule où tu veux copier la valeur et clique sur le bouton.

                          PS: La réponse est pour Excel (ce n'était pas précisé dans la question...mais Macro + cellule, ça doit être ça)