J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon
niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique
sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER()
'Atteindre le formulaire et mémoriser les données
Sheets("FormulaireDIAG").Select
Range("C4:C13").Select
Selection.Copy
'Test pour determiner la ligne où coller les infos dans le tableau
Sheets("Ne pas ouvrir").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transposition
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Rendre Vierge le formulaire
Sheets("FormulaireDIAG").Select
Range("C6:C12").Select
Selection.ClearContents
Range("C6").Select
'Retourner dans le tableau
Sheets("Ne pas ouvrir").Select
Range("A1").Select
'Tri automatique par ordre decroissant
Range("A2:IV65536").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Imprimer le devis en PDF
Sheets("DEVIS").PrintOut
'Mise à jour du Previsionnel
Sheets("Previsionnel").Select
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Sheets("Ne pas Ouvrir").Select
Range("A2").Select
Selection.Copy
Sheets("Previsionnel").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("C2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("D2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("H2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("E2").Select
ActiveSheet.Paste
Application.CutCopyMode = True
End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse
dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé
la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous
m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute
dans un module, je n'ai pas de pb mais lorsque que cette macro est rattachée
à la page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13'
: INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de
valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonsoir. A priori, la seule différence, c'est que, quand une macro s'exécute depuis une feuille, la feuille par défaut est la feuille qui contient la macro, pas la feuille active. Aussi quand tu mets, par exemple : Sheets("Ne pas Ouvrir").Select Range("A2").Select Ce n'est pas la cellule A2 de la feuille "Ne pas Ouvrir" qui est sélectionnée, mais la cellule A2 de la feuille qui contient la macro. Et comme tu ne peux pas sélectionner une cellule d'une feuille non active, tu récoltes une erreur. Donc, toujours qualifier les plages : Sheets("Ne pas Ouvrir").Range("A2").Select Cordialement. Daniel
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER() 'Atteindre le formulaire et mémoriser les données Sheets("FormulaireDIAG").Select Range("C4:C13").Select Selection.Copy 'Test pour determiner la ligne où coller les infos dans le tableau Sheets("Ne pas ouvrir").Select valeurA2 = Range("A2").Value If valeurA2 = "" Then Range("A2").Select Else Range("A1").Select Selection.End(xlDown).Select ligne_active_base = ActiveCell.Row Range("A" & ligne_active_base + 1).Select End If 'Memorise le n° de la ligne où coller les données ligne_active_base = ActiveCell.Row 'Collage avec transposition Range("A" & ligne_active_base).Select Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:=True 'Rendre Vierge le formulaire Sheets("FormulaireDIAG").Select Range("C6:C12").Select Selection.ClearContents Range("C6").Select 'Retourner dans le tableau Sheets("Ne pas ouvrir").Select Range("A1").Select 'Tri automatique par ordre decroissant Range("A2:IV65536").Select Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'Imprimer le devis en PDF Sheets("DEVIS").PrintOut 'Mise à jour du Previsionnel Sheets("Previsionnel").Select Rows("2:2").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Sheets("Ne pas Ouvrir").Select Range("A2").Select Selection.Copy Sheets("Previsionnel").Select Range("A2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("B2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("B2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("C2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("D2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("D2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("H2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("E2").Select ActiveSheet.Paste Application.CutCopyMode = True End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute dans un module, je n'ai pas de pb mais lorsque que cette macro est rattachée à la page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13' : INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub
Qq'un voit-il pourquoi?
Merci
JBF
Bonsoir.
A priori, la seule différence, c'est que, quand une macro s'exécute
depuis une feuille, la feuille par défaut est la feuille qui contient
la macro, pas la feuille active. Aussi quand tu mets, par exemple :
Sheets("Ne pas Ouvrir").Select
Range("A2").Select
Ce n'est pas la cellule A2 de la feuille "Ne pas Ouvrir" qui est
sélectionnée, mais la cellule A2 de la feuille qui contient la macro.
Et comme tu ne peux pas sélectionner une cellule d'une feuille non
active, tu récoltes une erreur. Donc, toujours qualifier les plages :
Sheets("Ne pas Ouvrir").Range("A2").Select
Cordialement.
Daniel
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon
niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique
sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER()
'Atteindre le formulaire et mémoriser les données
Sheets("FormulaireDIAG").Select
Range("C4:C13").Select
Selection.Copy
'Test pour determiner la ligne où coller les infos dans le tableau
Sheets("Ne pas ouvrir").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transposition
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:úlse, Transpose:=True
'Rendre Vierge le formulaire
Sheets("FormulaireDIAG").Select
Range("C6:C12").Select
Selection.ClearContents
Range("C6").Select
'Retourner dans le tableau
Sheets("Ne pas ouvrir").Select
Range("A1").Select
'Tri automatique par ordre decroissant
Range("A2:IV65536").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Imprimer le devis en PDF
Sheets("DEVIS").PrintOut
'Mise à jour du Previsionnel
Sheets("Previsionnel").Select
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Sheets("Ne pas Ouvrir").Select
Range("A2").Select
Selection.Copy
Sheets("Previsionnel").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("C2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("D2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("H2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("E2").Select
ActiveSheet.Paste
Application.CutCopyMode = True
End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse
dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé
la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous m'ont
dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute dans un
module, je n'ai pas de pb mais lorsque que cette macro est rattachée à la
page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13'
: INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de
valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture
End Sub
Bonsoir. A priori, la seule différence, c'est que, quand une macro s'exécute depuis une feuille, la feuille par défaut est la feuille qui contient la macro, pas la feuille active. Aussi quand tu mets, par exemple : Sheets("Ne pas Ouvrir").Select Range("A2").Select Ce n'est pas la cellule A2 de la feuille "Ne pas Ouvrir" qui est sélectionnée, mais la cellule A2 de la feuille qui contient la macro. Et comme tu ne peux pas sélectionner une cellule d'une feuille non active, tu récoltes une erreur. Donc, toujours qualifier les plages : Sheets("Ne pas Ouvrir").Range("A2").Select Cordialement. Daniel
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER() 'Atteindre le formulaire et mémoriser les données Sheets("FormulaireDIAG").Select Range("C4:C13").Select Selection.Copy 'Test pour determiner la ligne où coller les infos dans le tableau Sheets("Ne pas ouvrir").Select valeurA2 = Range("A2").Value If valeurA2 = "" Then Range("A2").Select Else Range("A1").Select Selection.End(xlDown).Select ligne_active_base = ActiveCell.Row Range("A" & ligne_active_base + 1).Select End If 'Memorise le n° de la ligne où coller les données ligne_active_base = ActiveCell.Row 'Collage avec transposition Range("A" & ligne_active_base).Select Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:=True 'Rendre Vierge le formulaire Sheets("FormulaireDIAG").Select Range("C6:C12").Select Selection.ClearContents Range("C6").Select 'Retourner dans le tableau Sheets("Ne pas ouvrir").Select Range("A1").Select 'Tri automatique par ordre decroissant Range("A2:IV65536").Select Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'Imprimer le devis en PDF Sheets("DEVIS").PrintOut 'Mise à jour du Previsionnel Sheets("Previsionnel").Select Rows("2:2").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Sheets("Ne pas Ouvrir").Select Range("A2").Select Selection.Copy Sheets("Previsionnel").Select Range("A2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("B2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("B2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("C2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("D2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("D2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("H2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("E2").Select ActiveSheet.Paste Application.CutCopyMode = True End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute dans un module, je n'ai pas de pb mais lorsque que cette macro est rattachée à la page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13' : INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub
Qq'un voit-il pourquoi?
Merci
JBF
JBF
Bonjour,
Pardon mais je ne comprends pas ta réponse. Sauf erreur de ma part, ce que tu me conseilles de faire est déjà fait, non?
Precision : l'erreur d'execution '13' me met en surbrillance cette partie là de la macro : IF TARGET.VALUE <>""
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure Sheets("Previsionnel").Select If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub
"Daniel.C" a écrit dans le message de news:
Bonsoir. A priori, la seule différence, c'est que, quand une macro s'exécute depuis une feuille, la feuille par défaut est la feuille qui contient la macro, pas la feuille active. Aussi quand tu mets, par exemple : Sheets("Ne pas Ouvrir").Select Range("A2").Select Ce n'est pas la cellule A2 de la feuille "Ne pas Ouvrir" qui est sélectionnée, mais la cellule A2 de la feuille qui contient la macro. Et comme tu ne peux pas sélectionner une cellule d'une feuille non active, tu récoltes une erreur. Donc, toujours qualifier les plages : Sheets("Ne pas Ouvrir").Range("A2").Select Cordialement. Daniel
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER() 'Atteindre le formulaire et mémoriser les données Sheets("FormulaireDIAG").Select Range("C4:C13").Select Selection.Copy 'Test pour determiner la ligne où coller les infos dans le tableau Sheets("Ne pas ouvrir").Select valeurA2 = Range("A2").Value If valeurA2 = "" Then Range("A2").Select Else Range("A1").Select Selection.End(xlDown).Select ligne_active_base = ActiveCell.Row Range("A" & ligne_active_base + 1).Select End If 'Memorise le n° de la ligne où coller les données ligne_active_base = ActiveCell.Row 'Collage avec transposition Range("A" & ligne_active_base).Select Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:=True 'Rendre Vierge le formulaire Sheets("FormulaireDIAG").Select Range("C6:C12").Select Selection.ClearContents Range("C6").Select 'Retourner dans le tableau Sheets("Ne pas ouvrir").Select Range("A1").Select 'Tri automatique par ordre decroissant Range("A2:IV65536").Select Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'Imprimer le devis en PDF Sheets("DEVIS").PrintOut 'Mise à jour du Previsionnel Sheets("Previsionnel").Select Rows("2:2").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Sheets("Ne pas Ouvrir").Select Range("A2").Select Selection.Copy Sheets("Previsionnel").Select Range("A2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("B2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("B2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("C2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("D2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("D2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("H2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("E2").Select ActiveSheet.Paste Application.CutCopyMode = True End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute dans un module, je n'ai pas de pb mais lorsque que cette macro est rattachée à la page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13' : INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub
Qq'un voit-il pourquoi?
Merci
JBF
Bonjour,
Pardon mais je ne comprends pas ta réponse.
Sauf erreur de ma part, ce que tu me conseilles de faire est déjà fait, non?
Precision : l'erreur d'execution '13' me met en surbrillance cette partie là
de la macro : IF TARGET.VALUE <>""
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de
valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
Sheets("Previsionnel").Select
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture
End Sub
"Daniel.C" <dcolardelleZZZ@free.fr> a écrit dans le message de news:
OJWFHGTPJHA.2348@TK2MSFTNGP05.phx.gbl...
Bonsoir.
A priori, la seule différence, c'est que, quand une macro s'exécute depuis
une feuille, la feuille par défaut est la feuille qui contient la macro,
pas la feuille active. Aussi quand tu mets, par exemple :
Sheets("Ne pas Ouvrir").Select
Range("A2").Select
Ce n'est pas la cellule A2 de la feuille "Ne pas Ouvrir" qui est
sélectionnée, mais la cellule A2 de la feuille qui contient la macro. Et
comme tu ne peux pas sélectionner une cellule d'une feuille non active, tu
récoltes une erreur. Donc, toujours qualifier les plages :
Sheets("Ne pas Ouvrir").Range("A2").Select
Cordialement.
Daniel
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon
niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je
clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER()
'Atteindre le formulaire et mémoriser les données
Sheets("FormulaireDIAG").Select
Range("C4:C13").Select
Selection.Copy
'Test pour determiner la ligne où coller les infos dans le tableau
Sheets("Ne pas ouvrir").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transposition
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:úlse, Transpose:=True
'Rendre Vierge le formulaire
Sheets("FormulaireDIAG").Select
Range("C6:C12").Select
Selection.ClearContents
Range("C6").Select
'Retourner dans le tableau
Sheets("Ne pas ouvrir").Select
Range("A1").Select
'Tri automatique par ordre decroissant
Range("A2:IV65536").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Imprimer le devis en PDF
Sheets("DEVIS").PrintOut
'Mise à jour du Previsionnel
Sheets("Previsionnel").Select
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Sheets("Ne pas Ouvrir").Select
Range("A2").Select
Selection.Copy
Sheets("Previsionnel").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("C2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("D2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("H2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("E2").Select
ActiveSheet.Paste
Application.CutCopyMode = True
End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton
apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour
cela j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais
deux d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement
quand je l'exécute dans un module, je n'ai pas de pb mais lorsque que
cette macro est rattachée à la page "Previsionnel" j'ai un message
d'erreur : ERREUR D'EXÉCUTION '13'
: INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement
de valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> "" Then
Module4.bouton_transformation_du_devis_en_facture
End Sub
Pardon mais je ne comprends pas ta réponse. Sauf erreur de ma part, ce que tu me conseilles de faire est déjà fait, non?
Precision : l'erreur d'execution '13' me met en surbrillance cette partie là de la macro : IF TARGET.VALUE <>""
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure Sheets("Previsionnel").Select If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub
"Daniel.C" a écrit dans le message de news:
Bonsoir. A priori, la seule différence, c'est que, quand une macro s'exécute depuis une feuille, la feuille par défaut est la feuille qui contient la macro, pas la feuille active. Aussi quand tu mets, par exemple : Sheets("Ne pas Ouvrir").Select Range("A2").Select Ce n'est pas la cellule A2 de la feuille "Ne pas Ouvrir" qui est sélectionnée, mais la cellule A2 de la feuille qui contient la macro. Et comme tu ne peux pas sélectionner une cellule d'une feuille non active, tu récoltes une erreur. Donc, toujours qualifier les plages : Sheets("Ne pas Ouvrir").Range("A2").Select Cordialement. Daniel
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER() 'Atteindre le formulaire et mémoriser les données Sheets("FormulaireDIAG").Select Range("C4:C13").Select Selection.Copy 'Test pour determiner la ligne où coller les infos dans le tableau Sheets("Ne pas ouvrir").Select valeurA2 = Range("A2").Value If valeurA2 = "" Then Range("A2").Select Else Range("A1").Select Selection.End(xlDown).Select ligne_active_base = ActiveCell.Row Range("A" & ligne_active_base + 1).Select End If 'Memorise le n° de la ligne où coller les données ligne_active_base = ActiveCell.Row 'Collage avec transposition Range("A" & ligne_active_base).Select Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:=True 'Rendre Vierge le formulaire Sheets("FormulaireDIAG").Select Range("C6:C12").Select Selection.ClearContents Range("C6").Select 'Retourner dans le tableau Sheets("Ne pas ouvrir").Select Range("A1").Select 'Tri automatique par ordre decroissant Range("A2:IV65536").Select Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'Imprimer le devis en PDF Sheets("DEVIS").PrintOut 'Mise à jour du Previsionnel Sheets("Previsionnel").Select Rows("2:2").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Sheets("Ne pas Ouvrir").Select Range("A2").Select Selection.Copy Sheets("Previsionnel").Select Range("A2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("B2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("B2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("C2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("D2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("D2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("H2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("E2").Select ActiveSheet.Paste Application.CutCopyMode = True End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute dans un module, je n'ai pas de pb mais lorsque que cette macro est rattachée à la page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13' : INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub
Qq'un voit-il pourquoi?
Merci
JBF
JBF
Re,
En fait j'ai résolu mon problème de la façon suivante.
Dans la macro rattachée à la feuille "Previsionnel" j'ai remplacé l'erreur qui était surlignée en jaune : IF TARGET.VALUE <>"" par : IF INTERSECT(TARGET, RANGE("F2:F65000")) et ça marche impeccablement.
Merci de votre participation
JBF
"JBF" a écrit dans le message de news:
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER() 'Atteindre le formulaire et mémoriser les données Sheets("FormulaireDIAG").Select Range("C4:C13").Select Selection.Copy 'Test pour determiner la ligne où coller les infos dans le tableau Sheets("Ne pas ouvrir").Select valeurA2 = Range("A2").Value If valeurA2 = "" Then Range("A2").Select Else Range("A1").Select Selection.End(xlDown).Select ligne_active_base = ActiveCell.Row Range("A" & ligne_active_base + 1).Select End If 'Memorise le n° de la ligne où coller les données ligne_active_base = ActiveCell.Row 'Collage avec transposition Range("A" & ligne_active_base).Select Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:=True 'Rendre Vierge le formulaire Sheets("FormulaireDIAG").Select Range("C6:C12").Select Selection.ClearContents Range("C6").Select 'Retourner dans le tableau Sheets("Ne pas ouvrir").Select Range("A1").Select 'Tri automatique par ordre decroissant Range("A2:IV65536").Select Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'Imprimer le devis en PDF Sheets("DEVIS").PrintOut 'Mise à jour du Previsionnel Sheets("Previsionnel").Select Rows("2:2").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Sheets("Ne pas Ouvrir").Select Range("A2").Select Selection.Copy Sheets("Previsionnel").Select Range("A2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("B2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("B2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("C2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("D2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("D2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("H2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("E2").Select ActiveSheet.Paste Application.CutCopyMode = True End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute dans un module, je n'ai pas de pb mais lorsque que cette macro est rattachée à la page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13' : INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub
Qq'un voit-il pourquoi?
Merci
JBF
Re,
En fait j'ai résolu mon problème de la façon suivante.
Dans la macro rattachée à la feuille "Previsionnel" j'ai remplacé l'erreur
qui était surlignée en jaune : IF TARGET.VALUE <>""
par : IF INTERSECT(TARGET, RANGE("F2:F65000")) et ça marche impeccablement.
Merci de votre participation
JBF
"JBF" <nospam-jbfield@free.fr> a écrit dans le message de news:
eGaFCwSPJHA.4680@TK2MSFTNGP06.phx.gbl...
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon
niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je
clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER()
'Atteindre le formulaire et mémoriser les données
Sheets("FormulaireDIAG").Select
Range("C4:C13").Select
Selection.Copy
'Test pour determiner la ligne où coller les infos dans le tableau
Sheets("Ne pas ouvrir").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Memorise le n° de la ligne où coller les données
ligne_active_base = ActiveCell.Row
'Collage avec transposition
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:úlse, Transpose:=True
'Rendre Vierge le formulaire
Sheets("FormulaireDIAG").Select
Range("C6:C12").Select
Selection.ClearContents
Range("C6").Select
'Retourner dans le tableau
Sheets("Ne pas ouvrir").Select
Range("A1").Select
'Tri automatique par ordre decroissant
Range("A2:IV65536").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Imprimer le devis en PDF
Sheets("DEVIS").PrintOut
'Mise à jour du Previsionnel
Sheets("Previsionnel").Select
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlDown
Sheets("Ne pas Ouvrir").Select
Range("A2").Select
Selection.Copy
Sheets("Previsionnel").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("B2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("C2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("D2").Select
ActiveSheet.Paste
Sheets("Ne pas Ouvrir").Select
Range("H2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Previsionnel").Select
Range("E2").Select
ActiveSheet.Paste
Application.CutCopyMode = True
End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton
apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour cela
j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais deux
d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand
je l'exécute dans un module, je n'ai pas de pb mais lorsque que cette
macro est rattachée à la page "Previsionnel" j'ai un message d'erreur :
ERREUR D'EXÉCUTION '13' : INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement
de valeur
'condition : si le changement se fait ailleurs que dans la colonne F de
Previsionnel alors la macro sort de la procédure
If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub
'si colonne F<>"rien" alors ça lance la macro du Module4 :
bouton_transformation_du_devis_en_facture
If Target.Value <> "" Then
Module4.bouton_transformation_du_devis_en_facture
End Sub
En fait j'ai résolu mon problème de la façon suivante.
Dans la macro rattachée à la feuille "Previsionnel" j'ai remplacé l'erreur qui était surlignée en jaune : IF TARGET.VALUE <>"" par : IF INTERSECT(TARGET, RANGE("F2:F65000")) et ça marche impeccablement.
Merci de votre participation
JBF
"JBF" a écrit dans le message de news:
Bonsoir,
J'ai apparement un problème de "compatibilité" entre deux macro. Et, mon niveau ne me permet pas d'identifier l'erreur.
Sur ma page "FormulaireDIAG" voici la macro qui s'exécute lorsque je clique sur le bouton "CREER DEVIS":
Sub transpose_DEVIS_dans_FACTURIER() 'Atteindre le formulaire et mémoriser les données Sheets("FormulaireDIAG").Select Range("C4:C13").Select Selection.Copy 'Test pour determiner la ligne où coller les infos dans le tableau Sheets("Ne pas ouvrir").Select valeurA2 = Range("A2").Value If valeurA2 = "" Then Range("A2").Select Else Range("A1").Select Selection.End(xlDown).Select ligne_active_base = ActiveCell.Row Range("A" & ligne_active_base + 1).Select End If 'Memorise le n° de la ligne où coller les données ligne_active_base = ActiveCell.Row 'Collage avec transposition Range("A" & ligne_active_base).Select Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:úlse, Transpose:=True 'Rendre Vierge le formulaire Sheets("FormulaireDIAG").Select Range("C6:C12").Select Selection.ClearContents Range("C6").Select 'Retourner dans le tableau Sheets("Ne pas ouvrir").Select Range("A1").Select 'Tri automatique par ordre decroissant Range("A2:IV65536").Select Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'Imprimer le devis en PDF Sheets("DEVIS").PrintOut 'Mise à jour du Previsionnel Sheets("Previsionnel").Select Rows("2:2").Select Application.CutCopyMode = False Selection.Insert Shift:=xlDown Sheets("Ne pas Ouvrir").Select Range("A2").Select Selection.Copy Sheets("Previsionnel").Select Range("A2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("B2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("B2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("C2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("D2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("D2").Select ActiveSheet.Paste Sheets("Ne pas Ouvrir").Select Range("H2").Select Application.CutCopyMode = False Selection.Copy Sheets("Previsionnel").Select Range("E2").Select ActiveSheet.Paste Application.CutCopyMode = True End Sub
Parralelement, sur ma page "Previsionnel" j'aimerais qu'un bouton apparaisse dès lors que j'ajoute une donnée dans la colonne "F". Pour cela j'ai trouvé la macro ci dessous. J'ai déjà demandé de l'aide mais deux d'entre vous m'ont dit qu'il n'y avait pas d'erreur. Effectivement quand je l'exécute dans un module, je n'ai pas de pb mais lorsque que cette macro est rattachée à la page "Previsionnel" j'ai un message d'erreur : ERREUR D'EXÉCUTION '13' : INCOMPATIBILITE DE TYPE
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque changement de valeur 'condition : si le changement se fait ailleurs que dans la colonne F de Previsionnel alors la macro sort de la procédure If Intersect(Target, Range("F2:F65000")) Is Nothing Then Exit Sub 'si colonne F<>"rien" alors ça lance la macro du Module4 : bouton_transformation_du_devis_en_facture If Target.Value <> "" Then Module4.bouton_transformation_du_devis_en_facture End Sub