AIDE sur macro

Résolu
corto76600 -  
 corto76600 -
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. Utilisateur anonyme
     
    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)
    0
  2. corto76600
     
    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.
    0
  3. Utilisateur anonyme
     
    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
    
    0
  4. corto76600
     
    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.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    Je n'ai pas d'erreur en testant ... Y-a-t'il un message ?
    0
  7. corto76600
     
    Erreur d'execution "9"
    l'indicde n'appartient pas à la sélection

    Cela vous dit quelque chose?
    0
  8. Utilisateur anonyme
     
    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"
    0
  9. corto76600
     
    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
    0
  10. corto76600
     
    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
    0
  11. corto76600
     
    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
    0
  12. Utilisateur anonyme
     
    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...
    0
  13. corto76600
     
    Merci bcp pour vos réponses et votre patience la macro fonctionne. Nicolas
    0