Bonjour à tous
J'ai un code qui me permets de copier des plages de cellules d'une feuille vers d'autres onglets.
Néanmoins j'ai quelques soucis...
Soucis N° 1
Ce code me crée de nouveaux onglets et efface tout les autres onglets de mon classeur OR je voudrais qu'il me copie les plages sur les onglets existants et déja nommés.
Soucis N° 2
Ce code me crée des onglets avec le nom "R-C1" (par exemple) et j'aimerais qu'il utilise les onglets déja créer et qui s'appellent "R1C1" (pare exemple)
J'ai tenté d'enlever la partie du code qui crée de nouveaux onglets mais cela ne fonctionne pas.
Si une âme charitable aurait la gentillesse de m'aider.
Très amicalement
françois
J'ai un code qui me permets de copier des plages de cellules d'une feuille vers d'autres onglets.
Néanmoins j'ai quelques soucis...
Code:
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)
Dim X As Long 'déclare la variable X (incrément)
Dim TLN() As Variant 'déclare la variable TLN (Tableau des Lignes à Numéro)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim LD1 As Long, LF1 As Long, LD2 As Long, LF2 As Long 'déclare les variables LD1, LF1, LD2 et LF2 (Ligne Début et ligne Fin)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
'***********************************************
'Recherche des ligne contenant "N°" en colonne A
'***********************************************
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OS
TV = OS.Range(OS.Cells(1, 1), OS.Cells(DL, 1)) 'définit le tableau des valeurs TV
For I = 1 To DL 'boucle sur toutes les lignes I du tableau des valeur TV
'si la donnée ligne I colonne 1 de TV est égale à "N°", redimensionne le tableau TLN, récupère dans TLN(X) la ligne I, incrémente X
If TV(I, 1) = "N°" Then ReDim Preserve TLN(X): TLN(X) = I: X = X + 1
Next I 'prochaine ligne de la boucle
'tableau TLN contient désormais toutes les lignes où la colonne A contient "N°"
'*********************************************
'Renvoie des donnés dans leur onglet respectif
'*********************************************
For I = 0 To UBound(TLN) 'boucle 1 : sur tous les éléments du tableau TLN
Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
ActiveSheet.Name = TV(TLN(I) - 1, 1) 'renomme l'onglet (avec la valeur de la donné ligne (TLN(I) moins une, colonne 1 de TV)
Set OD = ActiveSheet 'définit l'onglet destination OD
LD1 = TLN(I) 'définit la ligne de début LD1
For J = LD1 To DL 'boucle 2 : sur toutes les lignes J de TV (de LD1 à DL)
'si la donnée ligne J colonne 1 de TV est égale à "Rang : ", définit les lignes LF1, LD2 et LF2 et sort de la boucle
If TV(J, 1) = "Rang : " Then LF1 = J - 1: LD2 = J + 1: LF2 = J + 11: Exit For
Next J 'prochaine ligne de la boucle 2
'copie les lignes LD1 à LF1 de l'onglet source et les colle dans A71 de l'onglet destination
OS.Rows(LD1 & ":" & LF1).Copy OD.Range("A71")
'copie les lignes LD2 à LF2 de l'onglet source et les colle dans A94 de l'onglet destination
OS.Rows(LD2 & ":" & LF2).Copy OD.Range("A94")
ActiveWindow.ScrollRow = 71 'place la ligne 71 en haut de la fenêtre
Next I 'prochain élément de la boucle 1
MsgBox "Traitement des données terminé !" 'message
End Sub
Soucis N° 1
Ce code me crée de nouveaux onglets et efface tout les autres onglets de mon classeur OR je voudrais qu'il me copie les plages sur les onglets existants et déja nommés.
Soucis N° 2
Ce code me crée des onglets avec le nom "R-C1" (par exemple) et j'aimerais qu'il utilise les onglets déja créer et qui s'appellent "R1C1" (pare exemple)
J'ai tenté d'enlever la partie du code qui crée de nouveaux onglets mais cela ne fonctionne pas.
Si une âme charitable aurait la gentillesse de m'aider.
Très amicalement
françois