Excel respect de la mise en page!! - Page 2
Résolu
Précédent
- 1
- 2
Salut, je touche au but. Michel_m, j'obtiens bien la mise en page pour mes cellules et ça c'est cool. Comme tu me le dis pour mon tableau je sélectionne la première cible et ensuite je fait glisser sur les deux colonnes à l'aide de la petite croix noir en bas à droite de la case et ensuite je fais glisser de la même manière sur toutes les lignes dont j'ai besoin... et là erreur d'execution '13' : incompatibilité de type...Je clique sur fin et il faut donc que je sélectionne une par une mes cellules que je valide la formule insérée automatiquement par excel et là j'obtiens la bonne mise en page (c'est déjà cool et faisable avec un clic dans la barre blanche et entrée ainsi de suite...). Pensez vous qu'il est possible de régler ce pb??
Un truc du style sélectionner une cellule, lui appliquer le module que tu as fait et passer aux cellules suivantes...
En tout cas merci beaucoup...
Un truc du style sélectionner une cellule, lui appliquer le module que tu as fait et passer aux cellules suivantes...
En tout cas merci beaucoup...
Bonjour vous deux,
Comme il y a plus dans deux têtes que dans une j'ai adapté les macros en une qui fait tout et sans mnipulation.
Tu colle la macro ci-dessous dans un module
Juste adapté Feuil3 au nom de ta feuille destination
sheets("Feuil3").Select
Autant de feuilles que tu veux, tu met toutes les formules que tu veux, ligne vide autorisée, titre autorisé etc..
Comme tu dit plus haut, tu copie toujours 3 colonnes, si plus changer le 2 en nombre de colonnes -1
Range(Cells(R, C), Cells(R, C + 2)).Select
Quand ta page est remplie de toute tes adresses, mettre le curseur dans la macro et tape F5, tout est fait en une fois...
Si ca convient tu peu la lier à un bouton d'une barre d'outils.
A+
Comme il y a plus dans deux têtes que dans une j'ai adapté les macros en une qui fait tout et sans mnipulation.
Tu colle la macro ci-dessous dans un module
Sub CopieFormat()
Dim i As Integer, e As Integer
Dim Txt As String
Dim T
Dim Cel As Range
Dim R As Long, C As Integer
sheets("Feuil3").Select
Range("A1:A" & Range("A1").SpecialCells(xlCellTypeLastCell).Row).Select
For Each Cel In Selection
If Cel.HasFormula = True Then
Txt = Mid(Cel.Formula, 2)
T = Split(Txt, "!", -1)
Sheets(T(0)).Select
R = Range(Txt).Row: C = Range(Txt).Column
Range(Cells(R, C), Cells(R, C + 2)).Select
Selection.Copy
sheets("Feuil3").Select
Cel.Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End If
Next Cel
End Sub
Juste adapté Feuil3 au nom de ta feuille destination
sheets("Feuil3").Select
Autant de feuilles que tu veux, tu met toutes les formules que tu veux, ligne vide autorisée, titre autorisé etc..
Comme tu dit plus haut, tu copie toujours 3 colonnes, si plus changer le 2 en nombre de colonnes -1
Range(Cells(R, C), Cells(R, C + 2)).Select
Quand ta page est remplie de toute tes adresses, mettre le curseur dans la macro et tape F5, tout est fait en une fois...
Si ca convient tu peu la lier à un bouton d'une barre d'outils.
A+
Parfait un grand merci à vous deux... Et félicitation, je vais de même me mettre au vba que je ne connaissais pas ça a l'air bien sympa je vais commencer par essayer de comprendre ce programme
Encore merci...
Encore merci...
A la bourre comme d'hab
mais
avec les modifs demandées:
Tu sélectionnes la zone voulue et tu fais un clic droit
Remplace Worksheets=_change
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim plage As String
Cancel = True
plage = Selection.Address
Call copierformat(plage)
End Sub
Remplace l'ancienne copierformat
Sub copierformat(ByVal cible As String)
Dim depart As String, cellule As Range
Application.ScreenUpdating = False
For Each cellule In Range(cible)
If cellule.HasFormula Then
With cellule
depart = .Formula
depart = Right(depart, Len(depart) - 1)
.Interior.ColorIndex = Range(depart).Interior.ColorIndex
With .Font
.FontStyle = Range(depart).Font.FontStyle
.ColorIndex = Range(depart).Font.ColorIndex
End With
End With
End If
Next
Application.ScreenUpdating = True
End Sub
tite démo ci jointe pour le fun
Si tu te mets au VBA, je te conseille vivement ce site
www.info-3000.com
où tu trouveras des tutos très pédagogiques et décontractés
Bonne découverte
Michel
mais
avec les modifs demandées:
Tu sélectionnes la zone voulue et tu fais un clic droit
Remplace Worksheets=_change
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim plage As String
Cancel = True
plage = Selection.Address
Call copierformat(plage)
End Sub
Remplace l'ancienne copierformat
Sub copierformat(ByVal cible As String)
Dim depart As String, cellule As Range
Application.ScreenUpdating = False
For Each cellule In Range(cible)
If cellule.HasFormula Then
With cellule
depart = .Formula
depart = Right(depart, Len(depart) - 1)
.Interior.ColorIndex = Range(depart).Interior.ColorIndex
With .Font
.FontStyle = Range(depart).Font.FontStyle
.ColorIndex = Range(depart).Font.ColorIndex
End With
End With
End If
Next
Application.ScreenUpdating = True
End Sub
tite démo ci jointe pour le fun
Si tu te mets au VBA, je te conseille vivement ce site
www.info-3000.com
où tu trouveras des tutos très pédagogiques et décontractés
Bonne découverte
Michel
Précédent
- 1
- 2