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

procedure erreur

14 réponses
Avatar
pellet15
Bonjour a tous

Dans la procedure suivante je bloc (erreur message X 400)
cela ce produit (ligne 20) Range("E1").Select

dans cette cellule j'ai la formule qui me donne le nom du fichier
que je copie et colle la valeur (soit le nom du fichier que j'ai
besoin dans la cellule "E1")


Pourquoi et comment corriger (ce la fonctionnais et soudainement ca ne
fonctionne plus ? )

Merci

Sub Copie_onglet()
' CTRL-Shift_Z
Dim Nom_Classeur As Workbook, DanP As Worksheet
Dim Retour_Message As Long
For Each Nom_Classeur In Workbooks
If Nom_Classeur.Name <> ThisWorkbook.Name Then
Retour_Message =3D MsgBox("Voulez-vous copier les onglets " & _
"dans le fichier " & Nom_Classeur.Name, vbYesNo)
If Retour_Message =3D 6 Then
'ici tout ce que tu as =E0 faire avant
Set DanP =3D Workbooks(Nom_Classeur.Name).Sheets(1)
Sheets(Array("Soumission", "data",
"rapport_insp")).Copy After:=3DDanP
Exit For
End If
End If
Next
Set DanP =3D Nothing
Sheets("data").Select
ActiveSheet.Shapes("Button 1").Select
Selection.Cut
Sheets("Soumission").Select
Range("E1").Select
Calculate
Selection.Copy
Selection.PasteSpecial Paste:=3DxlPasteValues, Operation:=3DxlNone,
SkipBlanks _
:=3DFalse, Transpose:=3DFalse
Range("N1:R1").Select
ActiveCell.FormulaR1C1 =3D "=3Dsommaire!R[13]C[-12]"
Range("N2:R2").Select
ActiveCell.FormulaR1C1 =3D "=3Dsommaire!R[13]C[-12]"
Range("B67").Select

End Sub

10 réponses

1 2
Avatar
Gloops
Bonjour,

Je n'ai pas tout suivi, mais juste avant Range("E1").Select, je vois
Sheets("soumission").Select

Si j'en crois l'expérience que je peux avoir de ce genre de manÂœuvre, on
sélectionne un champ, mais on active une feuille.

Sheets("soumission").Activate
Range("E1").Select

Si c'était la bonne feuille qui était activée jusque là il n'y av ait pas
de problème, si ce n'est pas le cas ça coince.

Ceci dit sans avoir épluché la macro pour voir ce qu'elle a dans le
ventre et si il y a autre chose d'indigeste.
Avatar
DanielCo
Bonjour,
Pour une feuille, il n'y a pas de différence entre "activate" et
"select". Pour une plage, c'est différent. Par exemple :
Range("A1:E10").Select
Range("B8").Activate
=> La plage A1:E10 est sélectée et B8 est la cellule active.
Cordialement.
Daniel

Bonjour,

Je n'ai pas tout suivi, mais juste avant Range("E1").Select, je vois
Sheets("soumission").Select

Si j'en crois l'expérience que je peux avoir de ce genre de man½uvre, on
sélectionne un champ, mais on active une feuille.

Sheets("soumission").Activate
Range("E1").Select

Si c'était la bonne feuille qui était activée jusque là il n'y avait pas de
problème, si ce n'est pas le cas ça coince.

Ceci dit sans avoir épluché la macro pour voir ce qu'elle a dans le ventre et
si il y a autre chose d'indigeste.
Avatar
pellet15
Le jeudi 15 mars 2012 17:18:59 UTC-4, Gloops a écrit :
Bonjour,

Je n'ai pas tout suivi, mais juste avant Range("E1").Select, je vois
Sheets("soumission").Select

Si j'en crois l'expérience que je peux avoir de ce genre de manÂœuvre, on
sélectionne un champ, mais on active une feuille.

Sheets("soumission").Activate
Range("E1").Select

Si c'était la bonne feuille qui était activée jusque là il n'y av ait pas
de problème, si ce n'est pas le cas ça coince.

Ceci dit sans avoir épluché la macro pour voir ce qu'elle a dans le
ventre et si il y a autre chose d'indigeste.




Bonjour Gloops

J'ai tanter avec "Activate"
mais ces encore X 400
je croix que ca block sur "Calculate"
mais il copie la cellule E1 mais pas avec la valeur rafraichie
et "Calculate" est avant dans la procédure???

Merci pour votre aide ;-)
Avatar
Gloops
pellet15 a écrit, le 16/03/2012 19:16 :
Bonjour Gloops

J'ai tanter avec "Activate"
mais ces encore X 400
je croix que ca block sur "Calculate"
mais il copie la cellule E1 mais pas avec la valeur rafraichie
et "Calculate" est avant dans la procédure???

Merci pour votre aide ;-)



Bon, ça commence à flotter un peu, c't'affaire.
Alors d'après ce que signale DanielCo je me suis basé sur des souveni rs
trop flous : ah, serait-ce avec le collage, que j'ai confondu ?
On copie le champ source, mais on sélectionne le champ cible et on coll e
à la feuille.

Bon, alors ma réponse était fausse ?
Je vais regarder un peu plus, mais du coup je ne promets rien.
Avatar
isabelle
bonjour pellet,

< ActiveSheet.Shapes("Button 1").Select
<Selection.Cut

pourquoi ces lignes
tu met le focus sur un objet et ça c'est pas bon
si tu veut supprimer ce bouton: ActiveSheet.Shapes("Button 1").Delete

1er adage de la programmation vb

dans une procédure il vaut mieux ne jamais mettre le focus sur quoi que se soit ;-)
si tu as besoin de modifier le focus vaut mieux utiliser Application.Goto Sheets("Feuil1").Range("A1")


--
isabelle



Le 2012-03-15 10:02, pellet15 a écrit :
Bonjour a tous

Dans la procedure suivante je bloc (erreur message X 400)
cela ce produit (ligne 20) Range("E1").Select

dans cette cellule j'ai la formule qui me donne le nom du fichier
que je copie et colle la valeur (soit le nom du fichier que j'ai
besoin dans la cellule "E1")


Pourquoi et comment corriger (ce la fonctionnais et soudainement ca ne
fonctionne plus ? )

Merci

Sub Copie_onglet()
' CTRL-Shift_Z
Dim Nom_Classeur As Workbook, DanP As Worksheet
Dim Retour_Message As Long
For Each Nom_Classeur In Workbooks
If Nom_Classeur.Name<> ThisWorkbook.Name Then
Retour_Message = MsgBox("Voulez-vous copier les onglets "& _
"dans le fichier "& Nom_Classeur.Name, vbYesNo)
If Retour_Message = 6 Then
'ici tout ce que tu as à faire avant
Set DanP = Workbooks(Nom_Classeur.Name).Sheets(1)
Sheets(Array("Soumission", "data",
"rapport_insp")).Copy After:ÚnP
Exit For
End If
End If
Next
Set DanP = Nothing
Sheets("data").Select
ActiveSheet.Shapes("Button 1").Select
Selection.Cut
Sheets("Soumission").Select
Range("E1").Select
Calculate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("N1:R1").Select
ActiveCell.FormulaR1C1 = "=sommaire!R[13]C[-12]"
Range("N2:R2").Select
ActiveCell.FormulaR1C1 = "=sommaire!R[13]C[-12]"
Range("B67").Select

End Sub
Avatar
isabelle
1er adage de la programmation vb
dans une procédure il vaut mieux ne jamais mettre le focus sur quoi que se soit ;-)



sauf exception : si on attend une donnée que l'utilisateur doit taper

--
isabelle
Avatar
pellet15
Le vendredi 16 mars 2012 19:17:59 UTC-4, isabelle a écrit :
> 1er adage de la programmation vb
> dans une procédure il vaut mieux ne jamais mettre le focus sur quoi que se soit ;-)

sauf exception : si on attend une donnée que l'utilisateur doit taper

--
isabelle



Bonjour Isabelle

J'ai corriger pour ActiveSheet.Shapes("Button 1").Delete a la place de cut .
Mais mon problème est plus loin dans la procédure,
la premier partie ces pour choisir le fichier ou je veut copier mes 3 ongle t.
ça fonctionne bien
..............................
Dim Nom_Classeur As Workbook, DanP As Worksheet
Dim Retour_Message As Long
For Each Nom_Classeur In Workbooks
If Nom_Classeur.Name <> ThisWorkbook.Name Then
Retour_Message = MsgBox("Voulez-vous copier les onglets " & _
"dans le fichier " & Nom_Classeur.Name, vbYesNo)
If Retour_Message = 6 Then
Set DanP = Workbooks(Nom_Classeur.Name).Sheets(1)
Sheets(Array("Soumission", "data", "rapport_insp")).Copy Af ter:ÚnP
Exit For
End If
End If
Next
Set DanP = Nothing
...........................
la deuxième étais pour supprimer un bouton dans une onglet.
ça va bien aussi.
...........................
Sheets("data").Select
ActiveSheet.Shapes("Button 1").Delete
............................
Troisième est pour inscrire dans la cellule "E1" le nom du fichier ou son les nouvelle onglet, pour ce faire dans la cellule il y a la formule suiva nte
( =STXT(CELLULE("filename");CHERCHE("[";CELLULE("filename"))+1; CHERCHE(" ]";CELLULE("filename"))-CHERCHE("[";CELLULE("filename"))-1) )
que je veut recopier et recoller avec collage spécial "Value"
ici ça va pas... message X400
????
.......................
Sheets("Soumission").Select
Range("E1").Select
Calculate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Ski pBlanks _
:úlse, Transpose:úlse
.............................
quatrième est de coller les formule dans deux cellule.

Range("N1:R1").Select
ActiveCell.FormulaR1C1 = "=sommaire!R[13]C[-12]"
Range("N2:R2").Select
ActiveCell.FormulaR1C1 = "=sommaire!R[13]C[-12]"
Range("B67").Select
End Sub
..............................

Merci pour votre aide
Avatar
Gloops
pellet15 a écrit, le 17/03/2012 16:04 :
Troisième est pour inscrire dans la cellule "E1" le nom du fichier ou son les nouvelle onglet, pour ce faire dans la cellule il y a la formule suivante
( =STXT(CELLULE("filename");CHERCHE("[";CELLULE("filename"))+1; CHERC HE("]";CELLULE("filename"))-CHERCHE("[";CELLULE("filename"))-1) )
que je veut recopier et recoller avec collage spécial "Value"
ici ça va pas... message X400



N'aurais-tu pas négligé de servir de l'assistant de création de for mules
? Voire même de l'intellisense ?
Vers la fin il manque une parenthèse, semble-t-il juste avant le -1,
mais ça ne rime à rien que je te dise là, non non un peu plus à g auche,
oui là, alors que normalement tu peux le voir en baladant le curseur
dans la formule.

Il est vrai que je ne t'ai pas demandé quelle version tu utilises, mais
ce genre de joujoux existe depuis longtemps, me semble-t-il ? Je me
trompe ou je m'en suis servi en version 5 ? (oh ça ne nous rajeunit pas ...)

Si c'est plus facile tu peux décomposer la formule en ses différents
composants en utilisant pour cela plusieurs cellules, et là tu repère s
bien où se trouve l'erreur. Ensuite, si tu préfères tu peux recopie r les
différents composants dans les arguments de la cellule principale.

Ah tiens, en version 2007 j'ai un message me disant qu'Excel a trouvé
une erreur dans la formule, et me demandant si je veux l'accepter quand
même. C'est où, X400 ?
Je me demande si ça fait référence à un numéro d'erreur en hexa décimal,
enfin ça déroute un brin quand même.

(Ah, ben ce coup-là, le correcteur orthographique a bien fait son
boulot. J'avais oublié, moi, l'histoire de hibou joujou pou ... Il m'a
proposé joujou s, bon enfin ça c'est l'exotisme du joujou, tiens un a utre)
Avatar
pellet15
Le samedi 17 mars 2012 12:57:32 UTC-4, Gloops a écrit :
pellet15 a écrit, le 17/03/2012 16:04 :
> Troisième est pour inscrire dans la cellule "E1" le nom du fichier ou son les nouvelle onglet, pour ce faire dans la cellule il y a la formule s uivante
> ( =STXT(CELLULE("filename");CHERCHE("[";CELLULE("filename"))+1; CHERC HE("]";CELLULE("filename"))-CHERCHE("[";CELLULE("filename"))-1) )
> que je veut recopier et recoller avec collage spécial "Value"
> ici ça va pas... message X400

N'aurais-tu pas négligé de servir de l'assistant de création de for mules
? Voire même de l'intellisense ?
Vers la fin il manque une parenthèse, semble-t-il juste avant le -1,
mais ça ne rime à rien que je te dise là, non non un peu plus à g auche,
oui là, alors que normalement tu peux le voir en baladant le curseur
dans la formule.

Il est vrai que je ne t'ai pas demandé quelle version tu utilises, mais
ce genre de joujoux existe depuis longtemps, me semble-t-il ? Je me
trompe ou je m'en suis servi en version 5 ? (oh ça ne nous rajeunit pas ...)

Si c'est plus facile tu peux décomposer la formule en ses différents
composants en utilisant pour cela plusieurs cellules, et là tu repère s
bien où se trouve l'erreur. Ensuite, si tu préfères tu peux recopie r les
différents composants dans les arguments de la cellule principale.

Ah tiens, en version 2007 j'ai un message me disant qu'Excel a trouvé
une erreur dans la formule, et me demandant si je veux l'accepter quand
même. C'est où, X400 ?
Je me demande si ça fait référence à un numéro d'erreur en hexa décimal,
enfin ça déroute un brin quand même.

(Ah, ben ce coup-là, le correcteur orthographique a bien fait son
boulot. J'avais oublié, moi, l'histoire de hibou joujou pou ... Il m'a
proposé joujou s, bon enfin ça c'est l'exotisme du joujou, tiens un a utre)



Bonjour Gloops

pour la formule ça va car ci je fait F9 (recalcule) le nom du fichier apr ès bien.

???
Avatar
isabelle
pourquoi ne pas utilisé
Sheets("data").Range("E1") = ActiveWorkbook.Name

et au lieu d'utiliser Paste:=xlPasteValues
utilise à la place:
Sheets("Soumission").Range("E1") = Sheets("Soumission").Range("E1").Value


--
isabelle



Le 2012-03-17 11:04, pellet15 a écrit :
Le vendredi 16 mars 2012 19:17:59 UTC-4, isabelle a écrit :
1er adage de la programmation vb


> dans une procédure il vaut mieux ne jamais mettre le focus sur quoi que se soit ;-)

sauf exception : si on attend une donnée que l'utilisateur doit taper

--
isabelle



Bonjour Isabelle

J'ai corriger pour ActiveSheet.Shapes("Button 1").Delete a la place de cut.
Mais mon problème est plus loin dans la procédure,
la premier partie ces pour choisir le fichier ou je veut copier mes 3 onglet.
ça fonctionne bien
..............................
Dim Nom_Classeur As Workbook, DanP As Worksheet
Dim Retour_Message As Long
For Each Nom_Classeur In Workbooks
If Nom_Classeur.Name<> ThisWorkbook.Name Then
Retour_Message = MsgBox("Voulez-vous copier les onglets "& _
"dans le fichier "& Nom_Classeur.Name, vbYesNo)
If Retour_Message = 6 Then
Set DanP = Workbooks(Nom_Classeur.Name).Sheets(1)
Sheets(Array("Soumission", "data", "rapport_insp")).Copy After:ÚnP
Exit For
End If
End If
Next
Set DanP = Nothing
...........................
la deuxième étais pour supprimer un bouton dans une onglet.
ça va bien aussi.
...........................
Sheets("data").Select
ActiveSheet.Shapes("Button 1").Delete
............................
Troisième est pour inscrire dans la cellule "E1" le nom du fichier ou son les nouvelle onglet, pour ce faire dans la cellule il y a la formule suivante
( =STXT(CELLULE("filename");CHERCHE("[";CELLULE("filename"))+1; CHERCHE("]";CELLULE("filename"))-CHERCHE("[";CELLULE("filename"))-1) )
que je veut recopier et recoller avec collage spécial "Value"
ici ça va pas... message X400
????
.......................
Sheets("Soumission").Select
Range("E1").Select
Calculate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:úlse, Transpose:úlse
.............................
quatrième est de coller les formule dans deux cellule.

Range("N1:R1").Select
ActiveCell.FormulaR1C1 = "=sommaire!R[13]C[-12]"
Range("N2:R2").Select
ActiveCell.FormulaR1C1 = "=sommaire!R[13]C[-12]"
Range("B67").Select
End Sub
..............................

Merci pour votre aide
1 2