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. 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)
    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. 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. 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. Je n'ai pas d'erreur en testant ... Y-a-t'il un message ?
            1. Erreur d'execution "9"
              l'indicde n'appartient pas à la sélection

              Cela vous dit quelque chose?
              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. 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. 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. 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. 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. Merci bcp pour vos réponses et votre patience la macro fonctionne. Nicolas