macro pour copier/coller plusieurs cellules

cayusbonus

XLDnaute Nouveau
Bonsoir à tous,
j'ai un tableau de données généalogique et je cherche une macro pour pouvoir copier/coller les informations du père ou de la mère vers les colonnes de l'enfant.
Je joint un fichier pour plus d'explication.
 

Pièces jointes

  • Classeur1.xls
    37.5 KB · Affichages: 240
  • Classeur1.xls
    37.5 KB · Affichages: 248
  • Classeur1.xls
    37.5 KB · Affichages: 249

cayusbonus

XLDnaute Nouveau
Re : macro pour copier/coller plusieurs cellules

A chaque fois que j'écris les données d'un enfant les noms de son père et de sa mère se collent dans la colonne enfants, comme ça ceux-ci deviennent à leur tour enfants pour lesquels je peux inscrire à nouveau un père et une mère. J'ai plus de 1000 noms à inscrire.
J'aimerais faire le copier/coller via un bouton. Je sélectionne les noms que je veux coller, je clique sur le bouton et il colle.
 

cayusbonus

XLDnaute Nouveau
Re : macro pour copier/coller plusieurs cellules

Et bien voila!, pour un enfant je dois inscrire son nom, prénom, date et lieux de naissance, noms et prénoms, dates et lieux de naissance du père et de la mère, etc....... .
Ensuite, je dois reprendre les noms, prénoms, date et lieux de naissance du père de cet enfant, que je réinscris dans la ligne en-dessous de l'enfant, et j'y ajoute les données de ses parents. Je dois faire la même chose avec la mère.
Je dois faire cette manoeuvre avec plus de 1000 noms et pour ne pas réinscrire, à la main, les données des parents une deuxième fois et par soucis de n'oublier personnes dans la colonne "Enfant", voila pourquoi je cherche une macro copier/coller.
Suis-je plus clair ?
 
Dernière édition:

PMO2

XLDnaute Accro
Re : macro pour copier/coller plusieurs cellules

Bonjour,

Une solution avec les codes suivants

1) Code à copier dans un module standard
Code:
'### Adapter au nom de la feuille ###
Public Const MA_FEUILLE As String = "Feuil1"
'###################################
Private Plage As Range
Private CB As CommandBar
Private CBB As CommandBarButton

Sub Copier_pmo(Optional dummy As Byte)
Dim R As Range
On Error GoTo Erreur
Set R = Selection.Cells(1, 1)
If R.Column <> 6 And R.Column <> 9 Then Exit Sub
If R = "" Then Exit Sub
Set R = R.Resize(1, 3)
Set Plage = R
R.Copy  'ne sert que pour la visualisation de l'utilisateur
Erreur:
If Err <> 0 Then MsgBox "Erreur " & Err.Number & _
    vbCrLf & Err.Description
End Sub

Sub Coller_pmo(Optional dummy As Byte)
Dim R As Range
Dim C As Range
Dim T(1 To 1, 1 To 4)
Dim i&
On Error GoTo Erreur
If Plage Is Nothing Then Exit Sub
Set R = Selection.Cells(1, 1)
If R.Column <> 2 Then Exit Sub
If R <> "" Then Exit Sub
If R.Row = 1 Then Exit Sub
If R.Offset(-1, 0) = "" Then Exit Sub
For Each C In Plage
  i& = i& + 1
  If i& < 3 Then
    T(1, i&) = C
  Else
    T(1, i& + 1) = C
  End If
Next C
Set R = R.Resize(1, 4)
R = T
Set Plage = Nothing
Application.CutCopyMode = False
Erreur:
If Err <> 0 Then MsgBox "Erreur " & Err.Number & _
    vbCrLf & Err.Description
End Sub

Sub DelBarre(Optional dummy As Byte)
For Each CB In Application.CommandBars
  If CB.Name = "Copier/Coller personnalisés" Then
    CB.Delete
    Exit For
  End If
Next CB
End Sub

Sub AddBarre(Optional dummy As Byte)
Set CB = Application.CommandBars.Add
With CB
  .Name = "Copier/Coller personnalisés"
  .Visible = True
  .Position = msoBarRight
End With
Set CBB = CB.Controls.Add(Type:=msoControlButton, ID:=22, Before:=1)
With CBB
  .Caption = "Collage spécial"
  .OnAction = "Coller_pmo"
  .DescriptionText = "Collage spécial"
End With
Set CBB = CB.Controls.Add(Type:=msoControlButton, ID:=19, Before:=1)
With CBB
  .Caption = "Copie spéciale"
  .OnAction = "Copier_pmo"
  .DescriptionText = "Copie spéciale"
End With
End Sub

2) Code à copier dans la fenêtre de code de ThisWorkbook
Code:
Private Sub Workbook_Open()
If Sheets(1).Name = MA_FEUILLE Then Call AddBarre
End Sub

Private Sub Workbook_Deactivate()
Call DelBarre
End Sub

3) Code à copier dans la fenêtre de code de la feuille concernée (Feuil1 dans votre exemple)
Code:
Private Sub Worksheet_Activate()
Call DelBarre
Call AddBarre
End Sub

Private Sub Worksheet_Deactivate()
Call DelBarre
End Sub

CELA FAIT
1) création d'une barre de commandes avec 2 boutons (Copier et Coller)
2) cette barre n'existe que dans le Classeur ET la feuille concernés
3) sélectionnez une cellule dans la colonne F ou la colonne I et cliquez sur le bouton "Copie spéciale"
4) sélectionnez la cellule de destination dans la colonne B et cliquez sur le bouton "Collage spécial"

Cordialement.

PMO
Patrick Morange
 

cayusbonus

XLDnaute Nouveau
Re : macro pour copier/coller plusieurs cellules

Bonsoir,
les codes sont dans le vba du fichier mais il n'y a rien.
Il n'y pas de barre de commandes avec 2 boutons (Copier et Coller).
Je suis désolé mais je n'y comprend pas grand chose en macro, alors, svp un peu de patience :eek:.
Merci.
 

PMO2

XLDnaute Accro
Re : macro pour copier/coller plusieurs cellules

Bonjour,

Peut être, le niveau de sécurité des macros n'autorise pas leurs exécutions.

Essayez la manipulation suivante
1) faites menu Outils/Macro/Sécurité...
2) dans l'onglet "Niveau de sécutité" optez pour "Niveau de sécurité faible"
3) pendant que nous y sommes, dans l'onglet "Editeurs approuvés" cliquez sur
"Faire confiance à tous les modèles et compléments installés" et cliquez également sur "Faire confiance au projet Visual Basic"
(dans le cas qui nous occupe on n'en a pas besoin mais c'est pour l'avenir)

Est-ce mieux ?

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Réponses
6
Affichages
449
Réponses
56
Affichages
1 K

Statistiques des forums

Discussions
312 488
Messages
2 088 846
Membres
103 972
dernier inscrit
steeter