Impress mise en forme

Bonjour,

Je rencontre un problème de mise en forme avec avec Impress en ce moment.

Lorsque je copie du texte d'une ligne à un autre, sur la même page, il y a parfois perte de mise en forme en route. Ou application d'un regle que je ne comprends pas ...

Je copie une sélection au milieu d'une phrase en plan1, et le colle au milieu d'une phrase en plan2, et toute la ligne devient plan1 en format mais dans la fenêtre des styles s'affiche en plan2.

Si je fait l'inverse (du plan2 au plan1), la selection reste en format plan2 lorsque je la colle, mais ne transforme pas la destination en plan2. Si je mets le curseur sur la sélection collé, ça s'affiche plan1 dans les styles.

De plus, lorsque je sélection une ligne de plan1 et je double-clique plan2, rien ne se passe..

Du coup, je ne sais plus si j'ai réelment compris ce qu'est un style de présentation et plan1, plan2 etc... et la documentation n'est pas très expansive a ce sujet.

merci de vos idées

Melodie

Bonjour,

Comment déboguer cette macro dans laquelle la syntaxe de la ligne 14 bloque ?

1. Sub ajouter()
2. '
3. ' ajouter Relevé Macro
4. '
5. Dim Entree1 As Integer
6. Dim Entree2 As Integer
7. Dim Msg1 As String
8. Dim Msg2 As String
9. Msg1 = "Noter le n° de la ligne à partir de laquelle vous voulez ajouter 20
    lignes"
10. Msg2 = "Noter le n° de la dernière ligne (nbr de lignes - 1)"
11. Entree1 = InputBox(Msg1)
12. Entree2 = InputBox(Msg2)
13. If IsNumeric(Entree1) Then
14. Rows("Entree1:Entree2").Select
15. Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
16. Sheets("Feuil2").Select
17. Range("I1:I20").Select
18. Selection.Copy
19. Sheets("Feuil1").Select
20. Range("Entree1").Select
21. Selection.PasteSpecial Paste:=xlPasteValues
22. End If
23. End Sub

Je voudrais aussi supprimer Msg2 en créant une variable Entree2 = Entree1 + 19 mais c'est aussi refusé.
Merci

Cordialement,
Sandy-Pascal Andriant

Bonjour,

ton message squatte un fil sans aucun rapport. Il serait préférable d'ouvrir un fil spécifique pour obtenir une visibilité maximale, donc les réponses les plus appropriées.

-> répondre en changeant l'objet d'un message ne change pas le fil. Les courrielleurs utilisent une référence interne pour associer les différents messages d'un même fil.

Bonjour,

de longue date béotien en VBA, je suis coutumier de ce type d'erreurs…
Quels sont les messages d'erreur ?

À ce que j'en comprends
Entree# de type Integer est censé récupérer Msg# de type String >> ça coincera toujours
La boucle If teste le caractère numérique, mais ne fait rien si ça ne l'est.
Quid si l'utilisateur se trompe ?

À quel objet Rows("Entree1:Entree2").Select est-il appliqué ?

Il doit manquer, je dis ça de mémoire sans Excel sous la main, un
With ActiveSheet (à confirmer)
14.

22.
End With

À défaut, il faut ajouter l'objet avant Rows.
Par ailleurs, dans certains cas, Select ne suffit pas, VBA attend un objet.Activate
Pour additionner Entree1 et 19, ils doivent d'abord être convertis en numérique, InputBox typant en String, si je ne me trompe pas.

En espérant ne pas avoir raconté trop d'âneries.

C_Lucien

Je corrige le With.

1. Sub ajouter()
2. '
3. ' ajouter Relevé Macro
4. '
5. Dim Entree1 As Integer
6. Dim Entree2 As Integer
7. Dim Msg1 As String
8. Dim Msg2 As String
9. Msg1 = "Noter le n° de la cellule A... dans laquelle vous voulez ajouter 20
    lignes"
10. Msg2 = "Noter le n° de la dernière ligne (nbr de lignes - 1)"
11. Entree1 = InputBox(Msg1)
12. Entree2 = InputBox(Msg2)
13. With ActiveSheet
14. If IsNumeric(Entree1) Then
15. Rows("Entree1:Entree2").Select
16. Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
17. Sheets("Feuil2").Select
18. Range("I1:I20").Select
19. Selection.Copy
20. Sheets("Feuil1").Select
21. ActiveSheet.Range("Entree1").Select
22. Selection.PasteSpecial Paste:=xlPasteValues
23. End If
24. End With
25. End Sub

Effectivement "Incompatibilité" 13 : en ligne 15.
J'ignore comment changer le type de la variable de String à Integer :-[
Cordialement, Sandy-Pascal Andriant

Il y a bien un moyen, mais je ne le retrouve pas dans ma mémoire organique…
Pas d'Excel avant lundi, ce n'est mon outil qu'au taf.

C_Lucien

Là tu dis que tu veux la ligne nommé "Entree1:Entree2" alors que tu
veux les lignes Entree1 jusqu'à Entree2, il faut donc écrire:
Rows(Entree1 & ":" & Entree2).Select

Bravo,

l'insertion de lignes fonctionne parfaitement

Maintenant c'est la copie qui bogue.

Cordialement,
Sandy-Pascal Andriant

Cordialement,
Sandy-Pascal Andriant
Coordinateur de UPT-Paléographie

14. Rows("Entree1:Entree2").Select

Là tu dis que tu veux la ligne nommé "Entree1:Entree2" alors que tu
veux les lignes Entree1 jusqu'à Entree2, il faut donc écrire:
Rows(Entree1& ":"& Entree2).Select

Bravo,

l'insertion de lignes fonctionne parfaitement

Maintenant c'est la copie qui bogue.
Cordialement,
Sandy-Pascal Andriant

Pardon,

j'aurais dû remettre la macro modifiée. Elle bogue en ligne 21. Je ne sais pas déclarer une cellule "A" & Entree1

1. Sub ajouter()
2. '
3. ' ajouter Relevé Macro
4. '
5. Dim Entree1 As Integer
6. Dim Entree2 As Integer
7. Dim Msg1 As String
8. Dim Msg2 As String
9. Msg1 = "Noter le n° de la cellule A... dans laquelle vous voulez ajouter 20
    lignes"
10. Msg2 = "Noter le n° de la dernière ligne (nbr de lignes - 1)"
11. Entree1 = InputBox(Msg1)
12. Entree2 = InputBox(Msg2)
13. With ActiveSheet
14. If IsNumeric(Entree1) Then
15. Rows(Entree1 & ":" & Entree2).Select
16. Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
17. Sheets("Feuil2").Select
18. Range("I1:I20").Select
19. Selection.Copy
20. Sheets("Feuil1").Select
21. Range("Entree1").Select
22. Selection.PasteSpecial Paste:=xlPasteValues
23. End If
24. End With
25. End Sub

C'est presque terminé.

21. Range("A" & Entree1).Select

ça marche sauf la mise en forme des cellules Feuil2!(I1:I20)

1. Sub ajouter()
2. '
3. ' ajouter Relevé Macro
4. '
5. Dim Entree1 As Integer
6. Dim Entree2 As Integer
7. Dim Msg1 As String
8. Dim Msg2 As String
9. Msg1 = "Noter le n° de la cellule A... dans laquelle vous voulez ajouter 20
    lignes"
10. Msg2 = "Noter le n° de la dernière ligne (nbr de lignes - 1)"
11. Entree1 = InputBox(Msg1)
12. Entree2 = InputBox(Msg2)
13. With ActiveSheet
14. If IsNumeric(Entree1) Then
15. Rows(Entree1 & ":" & Entree2).Select
16. Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
17. Sheets("Feuil2").Select
18. Range("I1:I20").Select
19. Selection.Copy
20. Sheets("Feuil1").Select
21. Range("A" & Entree1).Select
22. Selection.PasteSpecial Paste:=xlPasteValues
23. End If
24. End With
25. End Sub

Cordialement,
Sandy-Pascal Andriant

Terminé.

1. Sub ajouter()
2. '
3. ' ajouter Relevé Macro
4. '
5. Dim Entree1 As Integer
6. Dim Entree2 As Integer
7. Dim Msg1 As String
8. Dim Msg2 As String
9. Msg1 = "Noter le n° de la cellule A... dans laquelle vous voulez ajouter 20
    lignes"
10. Entree1 = InputBox(Msg1)
11. Entree2 = Entree1 + 19
12. With ActiveSheet
13. If IsNumeric(Entree1) Then
14. Rows(Entree1 & ":" & Entree2).Select
15. Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
16. Sheets("Feuil2").Select
17. Range("I1:I20").Select
18. Selection.Copy
19. Sheets("Feuil1").Select
20. Range("a" & Entree1).Select
21. ActiveSheet.Paste
22. End If
23. End With
24. End Sub

Evidemment je n'ai pas résolu le cas de la ligne 13 mais c'est sans importance pour moi puisque je suis le seul utilisateur.
Merci de votre patience.

Cordialement,
Sandy-Pascal Andriant

Bonjour,
Peux tu tester si tu reproduis cette anomalie en faisant un coller texte non formaté ?
J.M

Comportant attendu avec coller texte non formaté (la sélection prend la mise en forme de la destination)

Melodie

Voilà,

Après plusieurs tâtonnements, j'ai ajouté un vrai test sur la valeur entrée avec
     Loop Until IsNumeric(ValeurEntree)
et mis les variables à 0 avant traitement en cas d'insertions itératives.

Sub Relevé()
'
' Macro ajouter un Relevé
'
Dim ValeurEntree As String
Dim Entree1 As Integer
Dim Entree2 As Integer
Dim Msg1 As String
'
' Invite à entrer le n° de la ligne où insérer le relevé
Do
Msg1 = "Noter le n° de la cellule A... à partir de laquelle vous voulez ajouter le relevé"
ValeurEntree = InputBox(Msg1)
'
' Vérifier que l'entrée est bien un nombre
Loop Until IsNumeric(ValeurEntree)
'
' Attribution des valeurs aux variables
Entree1 = 0
Entree2 = 0
Entree1 = ValeurEntree
Entree2 = Entree1 + 19
'
' Insersion de 20 lignes et copie du relevé préparé dans la feuille "EN ATTENTE"
     Rows(Entree1 & ":" & Entree2).Select
     Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
     Sheets("EN ATTENTE").Select
     Range("C1:C20").Select
     Selection.Copy
     Sheets("paleo en cours").Select
     Range("a" & Entree1).Select
     ActiveSheet.Paste
End Sub

Cordialement,
Sandy-Pascal Andriant
Coordinateur de UPT-Paléographie