Copie suivant condition pour mise en page d'un document

nak

XLDnaute Occasionnel
Bonjour à tous,

J'utilise actuellement une macro qui me permet de faire une mise en page suivant les valeurs d'une plage de cellules.

Sub creation()
Dim i As Integer
Dim nomrech As String, cellule As Range

For i = 24 To 49
If Cells(i, 6) <> "" Then

nomrech = Cells(i, 6)

Set cellule = Sheets("Ttype").Range("C25:C65536").Find(nomrech)
If cellule Is Nothing Then
MsgBox "Erreur lors de la recherche.", vbCritical, "Erreur d'opération"
Else
'Renseigne le numéro d'opération
' Sheets("Général").Cells(i, 3).Copy
' Sheets("Ttype").Range(cellule.Offset(0, 9)).Select
' ActiveSheet.Paste

'Détermine la nouvelle ligne vide et copie le tableau
NextRow = Sheets("essai").Range("D65536").End(xlUp).Row + 2
Sheets("Ttype").Range(cellule.Offset(0, 9)).Copy
Sheets("essai").Cells(NextRow, 2).Insert

'Copie le nom de l'opération
Sheets("essai").Range("B65536").End(xlUp).Copy
Sheets("Général").Cells(i, 8).Select
ActiveSheet.Paste

End If

Set cellule = Nothing

End If
Next i

End Sub

Petite explication, suivant les références que je saisi en feuille Général, F24 à F49.
1) Je crée un tableau en feuille essai. Pour cela je copie les tableaux pré-créés en feuille Ttype suivant leurs références. La macro que j'utilise me permet d'éditer mes tableaux sans modifier le moindre code.
2) Je copie le nom attribué à la référence en colonne F de la feuille général.

Aujourd'hui, je voudrais ajouter une fonction avant ces deux commandes.
J'aimerais renseigner les références OP* de la colonne C feuille Général dans la feuille Ttype.
Par exemple, pour la première ligne, je voudrais copier C24 de la feuille général et coller cette valeur en D26:D28 de la feuille Ttype.
Pour la seconde ligne, copier C25 de la feuille général, coller en D32:D33 de la feuille Ttype.
Etc...

Bien attendu les références seront bien plus nombreuses ainsi que les tableaux types. les références peuvent aussi être dans un ordre différent.

Pour l'instant j'ai tenté d'écrire des lignes complémentaires mais sans succès :
''Renseigne le numéro d'opération
' Sheets("Général").Cells(i, 3).Copy
' Sheets("Ttype").Range(cellule.Offset(0, 9)).Select
' ActiveSheet.Paste

Pouvez vous m'aider SVP ?

Merci
 

Pièces jointes

  • essai.xls
    73 KB · Affichages: 43
  • essai.xls
    73 KB · Affichages: 45
  • essai.xls
    73 KB · Affichages: 41
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Copie suivant condition pour mise en page d'un document

Salut nak et le forum
Pas envie de me creuser la tête
je voudrais copier C24 de la feuille général et coller cette valeur en D26 : D28 de la feuille Ttype.
Tu veux copier une cellule sur 2 cellules.
=> si les cellules réceptrices sont fusionnées, tu ne peux que copier la valeur
Code:
Sheets("essai").Range("B65536").End(xlUp).Copy
Sheets("Général").Cells(i, 8).PasteSpecial (xlPasteValues)
A+
 

nak

XLDnaute Occasionnel
Re : Copie suivant condition pour mise en page d'un document

Bonjour,

Merci pour ta réponse Gorfael mais malheureusement cela ne semble pas fonctionner. :(

Les cellules réceptrices ne sont pas fusionnées, elles sont en colonne D:D de la feuille Ttype.
Par contre les cellules copiées sont fusionnées, colonne C:E de la feuille Général.

En fait se qu'il faudrait faire avant mes deux premières commandes c'est reporter les valeurs C24:E49 de la feuille Général en D:D de la feuille Ttype suivant F24:G49 de la feuille Général et A:A de la feuille Ttype.

Finalement je me demande si cette opération ne devrait pas être indépendante de ma macro. J'exécuterais le transfert des OP* avec une recherchev en vba puis la macro existante.

Je vais creuser dans ce sens, comme quoi une nuit de sommeil et on vois les choses différemment. Merci du conseil. :)

Bonne journée
 
Dernière édition:

nak

XLDnaute Occasionnel
Re : Copie suivant condition pour mise en page d'un document

Re bonjour,

Finalement je laisse tomber la recherchev avant ma macro car si j'ai des références identiques cela va poser problème.

J'essai donc toujours de copier l'OP* en colonne D soit cellule.Offset(0, 1)) de la feuille Type.

'Copie le numéro d'OP
Sheets("Général").Cells(i, 3).Copy
Sheets("Ttype").Range(cellule.Offset(0, 1)).Select
ActiveSheet.PasteSpecial (xlPasteValues)

Je ne comprends pas pourquoi cela ne fonctionne pas... :(

Pouvez vous m'aider SVP ?

Merci
 

Discussions similaires

Réponses
17
Affichages
847

Statistiques des forums

Discussions
312 305
Messages
2 087 080
Membres
103 457
dernier inscrit
fab2614