Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajout macro: plantage Excel

3 réponses
Avatar
anonymousA
Bonjour à tous,

Je rencontre un problème de plantage d'Excel avec un message Erreur
d'application EXCEL.EXE de la forme suivante:
L'instruction à "0x650561a4" emploie l'adresse mémoire "0x076dba7c". La
mémoire ne peut pas être "read".

Les N° d'adresses peuvent changer

Ce message se produit dans les conditions suivantes:

Je crée sur une feuille des controles combox selon la méthode

Set dp = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
Left:=c.Left, Top:=c.Top, Width:=12, Height:=12)

et je nourris les combobox de valeurs de colonne par programmation.

je commence , par programmation, par écrire une macro qui va permettre à
chacun de mes combobox dans des procédures evenementielles que je décris
plus loin de s'y referencer.
La méthode d'écriture est la suivante: dans ce programme la fonction
ProcedureExists(procedure,module) renvoie un booleen pour tester l'existence
de la procedure dans un module donné.

Sub Macro1

Set proj1 = ActiveWorkbook.VBProject.VBComponents("modHZFILTER").CodeModule

If Not ProcedureExists("Search", "modHZFILTER") Then

Set Subrange = ThisWorkbook.Worksheets("MODULE").Range("nommodule")

For i = 1 To 21

proj1.InsertLines proj1.CountOfLines + 1, Subrange(i)

Next

Set proj1 = Nothing
End If

End sub

Ensuite toujours par programmation, il faut que je crée des macros
evenementielles
attachées à chacun des combobox ce que je fais par la méthode suivante

Sub Macro 2

titi = ActiveWorkbook.ActiveSheet.CodeName

Set proj = ActiveWorkbook.VBProject.VBComponents(titi).CodeModule

For beta = 1 To nbHZ

nomcontrole = "HZFILTERA" & beta
If Not ProcedureExists1(nomcontrole & "_Click", titi) Then
textlocation = proj.CreateEventProc("Click", nomcontrole)

texteàécire = "Cells(Me.HZFILTERA" & beta & ".TopLeftCell.Row,
Me.HZFILTERA" & beta & ".TopLeftCell.Column).Activate" & Chr(13)
texteàécire = texteàécire & "Call Search(ActiveWorkbook.Name,
ActiveWorkbook.ActiveSheet.Name, Me.HZFILTERA" & beta & ".Name, Me.HZFILTERA"
& beta & ".TopLeftCell.Row, Me.HZFILTERA" & beta & ".Value, Me.HZFILTERA" &
beta & ".TopLeftCell.Column)" & Chr(13)
texteàécire = texteàécire & "Me.HZFILTERA" & beta & ".Value = Null"
& Chr(13)

proj.InsertLines proj.ProcBodyLine(nomcontrole & "_Click",
vbext_pk_Proc) + 2, texteàécire
End If

Next

end sub

le corps d'appel des macros précédentes est le suivant

Sub mon_programme
call macro1
call macro2
end sub

Mon problème arrive toujours au moment de l'ajout des procédures
evenementielles à l'endroit du programme textlocation =
proj.CreateEventProc("Click", nomcontrole)

Précision: quand je fais la 1ere partie (c.à.d Macro1 ) et que je m'en tiens
là puis que j'exécute la 2eme partie (Macro2) après, c.à.d pas en séquence
dans la Sub Mon_programme , tout se déroule très bien. C'est seulement quand
je veux faire exécuter l'un après l'autre dans la même séquence de programme
que ça plante.

Volià, j'ai été long mais j'ai déjà copieusement cherché et je sèche vraiment.

J'espère avoir été assez clair pour que vous puissiez me donner une piste de
solution.
Merci d'avance à tous.

3 réponses

Avatar
isabelle
bonjour anonymousA,

il faudrais vérifier cette commande:

texteà écire = texteà écire & "Call Search(ActiveWorkbook.Name,
ActiveWorkbook.ActiveSheet.Name, Me.HZFILTERA" & beta & ".Name, Me.HZFILTERA"
& beta & ".TopLeftCell.Row, Me.HZFILTERA" & beta & ".Value, Me.HZFILTERA" &
beta & ".TopLeftCell.Column)" & Chr(13)

isabelle


Bonjour à tous,

Je rencontre un problème de plantage d'Excel avec un message Erreur
d'application EXCEL.EXE de la forme suivante:
L'instruction à "0x650561a4" emploie l'adresse mémoire "0x076dba7c". La
mémoire ne peut pas être "read".

Les N° d'adresses peuvent changer

Ce message se produit dans les conditions suivantes:

Je crée sur une feuille des controles combox selon la méthode

Set dp = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
Left:=c.Left, Top:=c.Top, Width:, Height:)

et je nourris les combobox de valeurs de colonne par programmation.

je commence , par programmation, par écrire une macro qui va permettre Ã
chacun de mes combobox dans des procédures evenementielles que je décris
plus loin de s'y referencer.
La méthode d'écriture est la suivante: dans ce programme la fonction
ProcedureExists(procedure,module) renvoie un booleen pour tester l'existence
de la procedure dans un module donné.

Sub Macro1

Set proj1 = ActiveWorkbook.VBProject.VBComponents("modHZFILTER").CodeModule

If Not ProcedureExists("Search", "modHZFILTER") Then

Set Subrange = ThisWorkbook.Worksheets("MODULE").Range("nommodule")

For i = 1 To 21

proj1.InsertLines proj1.CountOfLines + 1, Subrange(i)

Next

Set proj1 = Nothing
End If

End sub

Ensuite toujours par programmation, il faut que je crée des macros
evenementielles
attachées à chacun des combobox ce que je fais par la méthode suivante

Sub Macro 2

titi = ActiveWorkbook.ActiveSheet.CodeName

Set proj = ActiveWorkbook.VBProject.VBComponents(titi).CodeModule

For beta = 1 To nbHZ

nomcontrole = "HZFILTERA" & beta
If Not ProcedureExists1(nomcontrole & "_Click", titi) Then
textlocation = proj.CreateEventProc("Click", nomcontrole)

texteà écire = "Cells(Me.HZFILTERA" & beta & ".TopLeftCell.Row,
Me.HZFILTERA" & beta & ".TopLeftCell.Column).Activate" & Chr(13)
texteà écire = texteà écire & "Call Search(ActiveWorkbook.Name,
ActiveWorkbook.ActiveSheet.Name, Me.HZFILTERA" & beta & ".Name, Me.HZFILTERA"
& beta & ".TopLeftCell.Row, Me.HZFILTERA" & beta & ".Value, Me.HZFILTERA" &
beta & ".TopLeftCell.Column)" & Chr(13)
texteà écire = texteà écire & "Me.HZFILTERA" & beta & ".Value = Null"
& Chr(13)

proj.InsertLines proj.ProcBodyLine(nomcontrole & "_Click",
vbext_pk_Proc) + 2, texteà écire
End If

Next

end sub

le corps d'appel des macros précédentes est le suivant

Sub mon_programme
call macro1
call macro2
end sub

Mon problème arrive toujours au moment de l'ajout des procédures
evenementielles à l'endroit du programme textlocation > proj.CreateEventProc("Click", nomcontrole)

Précision: quand je fais la 1ere partie (c.à .d Macro1 ) et que je m'en tiens
là puis que j'exécute la 2eme partie (Macro2) après, c.à .d pas en séquence
dans la Sub Mon_programme , tout se déroule très bien. C'est seulement quand
je veux faire exécuter l'un après l'autre dans la même séquence de programme
que ça plante.

Volià , j'ai été long mais j'ai déjà copieusement cherché et je sèche vraiment.

J'espère avoir été assez clair pour que vous puissiez me donner une piste de
solution.
Merci d'avance à tous.


Avatar
anonymousA
Merci pour ta réponse, mais qu'est ce qui te fait dire ça ?
En effet, quand je déclenche ma 2eme macro à la suite de la 1ere (c.à.d pas
dans le même corps de programme d'appel) , le programme écrit correctement
les macros évenementielles dans le module que je lui indique .



bonjour anonymousA,

il faudrais vérifier cette commande:

texteà écire = texteà écire & "Call Search(ActiveWorkbook.Name,
ActiveWorkbook.ActiveSheet.Name, Me.HZFILTERA" & beta & ".Name, Me.HZFILTERA"
& beta & ".TopLeftCell.Row, Me.HZFILTERA" & beta & ".Value, Me.HZFILTERA" &
beta & ".TopLeftCell.Column)" & Chr(13)

isabelle


Bonjour à tous,

Je rencontre un problème de plantage d'Excel avec un message Erreur
d'application EXCEL.EXE de la forme suivante:
L'instruction à "0x650561a4" emploie l'adresse mémoire "0x076dba7c". La
mémoire ne peut pas être "read".

Les N° d'adresses peuvent changer

Ce message se produit dans les conditions suivantes:

Je crée sur une feuille des controles combox selon la méthode

Set dp = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
Left:=c.Left, Top:=c.Top, Width:, Height:)

et je nourris les combobox de valeurs de colonne par programmation.

je commence , par programmation, par écrire une macro qui va permettre Ã
chacun de mes combobox dans des procédures evenementielles que je décris
plus loin de s'y referencer.
La méthode d'écriture est la suivante: dans ce programme la fonction
ProcedureExists(procedure,module) renvoie un booleen pour tester l'existence
de la procedure dans un module donné.

Sub Macro1

Set proj1 = ActiveWorkbook.VBProject.VBComponents("modHZFILTER").CodeModule

If Not ProcedureExists("Search", "modHZFILTER") Then

Set Subrange = ThisWorkbook.Worksheets("MODULE").Range("nommodule")

For i = 1 To 21

proj1.InsertLines proj1.CountOfLines + 1, Subrange(i)

Next

Set proj1 = Nothing
End If

End sub

Ensuite toujours par programmation, il faut que je crée des macros
evenementielles
attachées à chacun des combobox ce que je fais par la méthode suivante

Sub Macro 2

titi = ActiveWorkbook.ActiveSheet.CodeName

Set proj = ActiveWorkbook.VBProject.VBComponents(titi).CodeModule

For beta = 1 To nbHZ

nomcontrole = "HZFILTERA" & beta
If Not ProcedureExists1(nomcontrole & "_Click", titi) Then
textlocation = proj.CreateEventProc("Click", nomcontrole)

texteà écire = "Cells(Me.HZFILTERA" & beta & ".TopLeftCell.Row,
Me.HZFILTERA" & beta & ".TopLeftCell.Column).Activate" & Chr(13)
texteà écire = texteà écire & "Call Search(ActiveWorkbook.Name,
ActiveWorkbook.ActiveSheet.Name, Me.HZFILTERA" & beta & ".Name, Me.HZFILTERA"
& beta & ".TopLeftCell.Row, Me.HZFILTERA" & beta & ".Value, Me.HZFILTERA" &
beta & ".TopLeftCell.Column)" & Chr(13)
texteà écire = texteà écire & "Me.HZFILTERA" & beta & ".Value = Null"
& Chr(13)

proj.InsertLines proj.ProcBodyLine(nomcontrole & "_Click",
vbext_pk_Proc) + 2, texteà écire
End If

Next

end sub

le corps d'appel des macros précédentes est le suivant

Sub mon_programme
call macro1
call macro2
end sub

Mon problème arrive toujours au moment de l'ajout des procédures
evenementielles à l'endroit du programme textlocation > > proj.CreateEventProc("Click", nomcontrole)

Précision: quand je fais la 1ere partie (c.à .d Macro1 ) et que je m'en tiens
là puis que j'exécute la 2eme partie (Macro2) après, c.à .d pas en séquence
dans la Sub Mon_programme , tout se déroule très bien. C'est seulement quand
je veux faire exécuter l'un après l'autre dans la même séquence de programme
que ça plante.

Volià , j'ai été long mais j'ai déjà copieusement cherché et je sèche vraiment.

J'espère avoir été assez clair pour que vous puissiez me donner une piste de
solution.
Merci d'avance à tous.





Avatar
isabelle
problablement un problème de la copie,

que vaut la variable nbHZ lorsque survient l'erreur ?

isabelle


Merci pour ta réponse, mais qu'est ce qui te fait dire ça ?
En effet, quand je déclenche ma 2eme macro à la suite de la 1ere (c.à .d pas
dans le même corps de programme d'appel) , le programme écrit correctement
les macros évenementielles dans le module que je lui indique .


bonjour anonymousA,

il faudrais vérifier cette commande:

texteà écire = texteà écire & "Call Search(ActiveWorkbook.Name,
ActiveWorkbook.ActiveSheet.Name, Me.HZFILTERA" & beta & ".Name, Me.HZFILTERA"
& beta & ".TopLeftCell.Row, Me.HZFILTERA" & beta & ".Value, Me.HZFILTERA" &
beta & ".TopLeftCell.Column)" & Chr(13)

isabelle


Bonjour à tous,

Je rencontre un problème de plantage d'Excel avec un message Erreur
d'application EXCEL.EXE de la forme suivante:
L'instruction à "0x650561a4" emploie l'adresse mémoire "0x076dba7c". La
mémoire ne peut pas être "read".

Les N° d'adresses peuvent changer

Ce message se produit dans les conditions suivantes:

Je crée sur une feuille des controles combox selon la méthode

Set dp = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
Left:=c.Left, Top:=c.Top, Width:, Height:)

et je nourris les combobox de valeurs de colonne par programmation.

je commence , par programmation, par écrire une macro qui va permettre Ã
chacun de mes combobox dans des procédures evenementielles que je décris
plus loin de s'y referencer.
La méthode d'écriture est la suivante: dans ce programme la fonction
ProcedureExists(procedure,module) renvoie un booleen pour tester l'existence
de la procedure dans un module donné.

Sub Macro1

Set proj1 = ActiveWorkbook.VBProject.VBComponents("modHZFILTER").CodeModule

If Not ProcedureExists("Search", "modHZFILTER") Then

Set Subrange = ThisWorkbook.Worksheets("MODULE").Range("nommodule")

For i = 1 To 21

proj1.InsertLines proj1.CountOfLines + 1, Subrange(i)

Next

Set proj1 = Nothing
End If

End sub

Ensuite toujours par programmation, il faut que je crée des macros
evenementielles
attachées à chacun des combobox ce que je fais par la méthode suivante

Sub Macro 2

titi = ActiveWorkbook.ActiveSheet.CodeName

Set proj = ActiveWorkbook.VBProject.VBComponents(titi).CodeModule

For beta = 1 To nbHZ

nomcontrole = "HZFILTERA" & beta
If Not ProcedureExists1(nomcontrole & "_Click", titi) Then
textlocation = proj.CreateEventProc("Click", nomcontrole)

texteà écire = "Cells(Me.HZFILTERA" & beta & ".TopLeftCell.Row,
Me.HZFILTERA" & beta & ".TopLeftCell.Column).Activate" & Chr(13)
texteà écire = texteà écire & "Call Search(ActiveWorkbook.Name,
ActiveWorkbook.ActiveSheet.Name, Me.HZFILTERA" & beta & ".Name, Me.HZFILTERA"
& beta & ".TopLeftCell.Row, Me.HZFILTERA" & beta & ".Value, Me.HZFILTERA" &
beta & ".TopLeftCell.Column)" & Chr(13)
texteà écire = texteà écire & "Me.HZFILTERA" & beta & ".Value = Null"
& Chr(13)

proj.InsertLines proj.ProcBodyLine(nomcontrole & "_Click",
vbext_pk_Proc) + 2, texteà écire
End If

Next

end sub

le corps d'appel des macros précédentes est le suivant

Sub mon_programme
call macro1
call macro2
end sub

Mon problème arrive toujours au moment de l'ajout des procédures
evenementielles à l'endroit du programme textlocation > > > proj.CreateEventProc("Click", nomcontrole)

Précision: quand je fais la 1ere partie (c.à .d Macro1 ) et que je m'en tiens
là puis que j'exécute la 2eme partie (Macro2) après, c.à .d pas en séquence
dans la Sub Mon_programme , tout se déroule très bien. C'est seulement quand
je veux faire exécuter l'un après l'autre dans la même séquence de programme
que ça plante.

Volià , j'ai été long mais j'ai déjà copieusement cherché et je sèche vraiment.

J'espère avoir été assez clair pour que vous puissiez me donner une piste de
solution.
Merci d'avance à tous.