OVH Cloud OVH Cloud

Bouton de commande et erreur 1004

10 réponses
Avatar
Daniel
Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se produit à
l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003

10 réponses

Avatar
MichDenis
Bonjour Daniel,


Sheets("Base").Activate
Range("A1").Select '***********

Utilise plutôt cette façon d'écrire ton code:

With Sheets("Base")
.Activate
.Range("A1").Select
End With

Quand tu écris du code dans le module feuille, l'objet est réputé faire parti de cette feuille. c'est-à-dire,
Range("A1") devrait être un objet de la feuille où est situé le bouton de commande.

Cette première ligne active une autre feuille
Sheets("Base").Activate

comme cet objet est supposé faire parti de l'autre feuille, la procédure ne peut pas le sélectionner car sa feuille
n'est pas la feuille active ....
Range("A1").Select '***********

IL aurait fallu que tu écrives cette ligne de code de cette manière :
Sheets("Base"). Range("A1").Select

Ce raisonnement est vrai SAUF dans les modules Standard ou ton code se serait exécuté sans difficultés.


Salutations!




"Daniel" a écrit dans le message de news: %
Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se produit à
l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003
Avatar
jps
ou peut-être :

ActiveSheet.Range("A1")

car ta proc est écrite dans une feuille et va dans une autre (si j'ai tout
bien compris) et excel, tout comme moi, d'ailleurs, parfois, il ne sait plus
très bien où il en est...
jps

"MichDenis" a écrit dans le message de
news:
Bonjour Daniel,


Sheets("Base").Activate
Range("A1").Select '***********

Utilise plutôt cette façon d'écrire ton code:

With Sheets("Base")
.Activate
.Range("A1").Select
End With

Quand tu écris du code dans le module feuille, l'objet est réputé faire
parti de cette feuille. c'est-à-dire,

Range("A1") devrait être un objet de la feuille où est situé le bouton de
commande.


Cette première ligne active une autre feuille
Sheets("Base").Activate

comme cet objet est supposé faire parti de l'autre feuille, la procédure
ne peut pas le sélectionner car sa feuille

n'est pas la feuille active ....
Range("A1").Select '***********

IL aurait fallu que tu écrives cette ligne de code de cette manière :
Sheets("Base"). Range("A1").Select

Ce raisonnement est vrai SAUF dans les modules Standard ou ton code se
serait exécuté sans difficultés.



Salutations!




"Daniel" a écrit dans le message de news:
%

Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se produit
à

l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003





Avatar
jps
:-)))))))))))))))))))))))))))))))))
et je me paie un voyage au québec avec les consignes??????
bon week end de pâques
jps

"Denis Michon" a écrit dans le message de
news:zY01e.2535$
Bonjour JPS,

| tout comme moi, d'ailleurs, parfois, il ne sait plus très bien où il en
est...


Tu laisses les bouteilles sur la table... c'est plus pratique pour le
décompte !!

;-)


Salutations!






"jps" a écrit dans le message de news:


ou peut-être :

ActiveSheet.Range("A1")

car ta proc est écrite dans une feuille et va dans une autre (si j'ai tout
bien compris) et excel, tout comme moi, d'ailleurs, parfois, il ne sait
plus

très bien où il en est...
jps

"MichDenis" a écrit dans le message de
news:
Bonjour Daniel,


Sheets("Base").Activate
Range("A1").Select '***********

Utilise plutôt cette façon d'écrire ton code:

With Sheets("Base")
.Activate
.Range("A1").Select
End With

Quand tu écris du code dans le module feuille, l'objet est réputé faire
parti de cette feuille. c'est-à-dire,

Range("A1") devrait être un objet de la feuille où est situé le bouton
de


commande.

Cette première ligne active une autre feuille
Sheets("Base").Activate

comme cet objet est supposé faire parti de l'autre feuille, la procédure
ne peut pas le sélectionner car sa feuille

n'est pas la feuille active ....
Range("A1").Select '***********

IL aurait fallu que tu écrives cette ligne de code de cette manière :
Sheets("Base"). Range("A1").Select

Ce raisonnement est vrai SAUF dans les modules Standard ou ton code se
serait exécuté sans difficultés.



Salutations!




"Daniel" a écrit dans le message de news:
%

Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se
produit


à
l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003









Avatar
Denis Michon
Bonjour JPS,

| tout comme moi, d'ailleurs, parfois, il ne sait plus très bien où il en est...

Tu laisses les bouteilles sur la table... c'est plus pratique pour le décompte !!
;-)


Salutations!






"jps" a écrit dans le message de news:
ou peut-être :

ActiveSheet.Range("A1")

car ta proc est écrite dans une feuille et va dans une autre (si j'ai tout
bien compris) et excel, tout comme moi, d'ailleurs, parfois, il ne sait plus
très bien où il en est...
jps

"MichDenis" a écrit dans le message de
news:
Bonjour Daniel,


Sheets("Base").Activate
Range("A1").Select '***********

Utilise plutôt cette façon d'écrire ton code:

With Sheets("Base")
.Activate
.Range("A1").Select
End With

Quand tu écris du code dans le module feuille, l'objet est réputé faire
parti de cette feuille. c'est-à-dire,

Range("A1") devrait être un objet de la feuille où est situé le bouton de
commande.


Cette première ligne active une autre feuille
Sheets("Base").Activate

comme cet objet est supposé faire parti de l'autre feuille, la procédure
ne peut pas le sélectionner car sa feuille

n'est pas la feuille active ....
Range("A1").Select '***********

IL aurait fallu que tu écrives cette ligne de code de cette manière :
Sheets("Base"). Range("A1").Select

Ce raisonnement est vrai SAUF dans les modules Standard ou ton code se
serait exécuté sans difficultés.



Salutations!




"Daniel" a écrit dans le message de news:
%

Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se produit
à

l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003





Avatar
MichDenis
;-)

Bon congé pascal à toi aussi.


Salutations!


"jps" a écrit dans le message de news: %
:-)))))))))))))))))))))))))))))))))
et je me paie un voyage au québec avec les consignes??????
bon week end de pâques
jps

"Denis Michon" a écrit dans le message de
news:zY01e.2535$
Bonjour JPS,

| tout comme moi, d'ailleurs, parfois, il ne sait plus très bien où il en
est...


Tu laisses les bouteilles sur la table... c'est plus pratique pour le
décompte !!

;-)


Salutations!






"jps" a écrit dans le message de news:


ou peut-être :

ActiveSheet.Range("A1")

car ta proc est écrite dans une feuille et va dans une autre (si j'ai tout
bien compris) et excel, tout comme moi, d'ailleurs, parfois, il ne sait
plus

très bien où il en est...
jps

"MichDenis" a écrit dans le message de
news:
Bonjour Daniel,


Sheets("Base").Activate
Range("A1").Select '***********

Utilise plutôt cette façon d'écrire ton code:

With Sheets("Base")
.Activate
.Range("A1").Select
End With

Quand tu écris du code dans le module feuille, l'objet est réputé faire
parti de cette feuille. c'est-à-dire,

Range("A1") devrait être un objet de la feuille où est situé le bouton
de


commande.

Cette première ligne active une autre feuille
Sheets("Base").Activate

comme cet objet est supposé faire parti de l'autre feuille, la procédure
ne peut pas le sélectionner car sa feuille

n'est pas la feuille active ....
Range("A1").Select '***********

IL aurait fallu que tu écrives cette ligne de code de cette manière :
Sheets("Base"). Range("A1").Select

Ce raisonnement est vrai SAUF dans les modules Standard ou ton code se
serait exécuté sans difficultés.



Salutations!




"Daniel" a écrit dans le message de news:
%

Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se
produit


à
l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003









Avatar
AV
La méthode "Goto" convient bien à ce type de problème :

Application.Goto Reference:="Base!R1C1"

AV
Avatar
Daniel
Bonjour et merci à tous.
Ça résout ce problème. Je plante maintenant sur activecell. Je vais bien
trouver un contournement.
Cordialement.
Daniel
"Daniel" a écrit dans le message de news:
%
Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se produit
à l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003



Avatar
MichDenis
Bonjour Daniel,

Je ne connais pas d'autre moyen efficace de résoudre ce type de problème !

Utilises ce type de syntaxe !

'-------------------------------------
Private Sub CommandButton1_Click()

Dim Semaine As String, Decalage As Integer
Dim Rg As Range

With Sheets("Affichage")
If Len(.[B2]) = 8 Then
Semaine = "Semaine" & Right(.[B2], 1) + 1
Else
Semaine = "Semaine" & Right([.B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If

Application.EnableEvents = False
With Sheets("Base")
Set Rg = .[B1]
Decalage = Application.Match(Semaine, .Range("C1:N1"), 0)
Decalage = 5
End With

With Rg
.Value = Semaine
.Offset(, Decalage).Resize(33).Copy Rg
End With
Application.EnableEvents = True

Set Rg = Nothing


End Sub
'-------------------------------------


Salutations!




"Daniel" a écrit dans le message de news: u%
Bonjour et merci à tous.
Ça résout ce problème. Je plante maintenant sur activecell. Je vais bien
trouver un contournement.
Cordialement.
Daniel
"Daniel" a écrit dans le message de news:
%
Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se produit
à l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003



Avatar
MichDenis
Efface dans la procédure Decalage = 5 ce n'était que pour un petit test ... cela ne fait pas parti de ta procédure.


Salutations!



"MichDenis" a écrit dans le message de news: %
Bonjour Daniel,

Je ne connais pas d'autre moyen efficace de résoudre ce type de problème !

Utilises ce type de syntaxe !

'-------------------------------------
Private Sub CommandButton1_Click()

Dim Semaine As String, Decalage As Integer
Dim Rg As Range

With Sheets("Affichage")
If Len(.[B2]) = 8 Then
Semaine = "Semaine" & Right(.[B2], 1) + 1
Else
Semaine = "Semaine" & Right([.B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If

Application.EnableEvents = False
With Sheets("Base")
Set Rg = .[B1]
Decalage = Application.Match(Semaine, .Range("C1:N1"), 0)
Decalage = 5
End With

With Rg
.Value = Semaine
.Offset(, Decalage).Resize(33).Copy Rg
End With
Application.EnableEvents = True

Set Rg = Nothing


End Sub
'-------------------------------------


Salutations!




"Daniel" a écrit dans le message de news: u%
Bonjour et merci à tous.
Ça résout ce problème. Je plante maintenant sur activecell. Je vais bien
trouver un contournement.
Cordialement.
Daniel
"Daniel" a écrit dans le message de news:
%
Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se produit
à l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003



Avatar
Daniel
Merci encore. J'avais fait autrement, mais c'était moins général.
Cordialement.
Daniel
"MichDenis" a écrit dans le message de news:
%
Bonjour Daniel,

Je ne connais pas d'autre moyen efficace de résoudre ce type de problème !

Utilises ce type de syntaxe !

'-------------------------------------
Private Sub CommandButton1_Click()

Dim Semaine As String, Decalage As Integer
Dim Rg As Range

With Sheets("Affichage")
If Len(.[B2]) = 8 Then
Semaine = "Semaine" & Right(.[B2], 1) + 1
Else
Semaine = "Semaine" & Right([.B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If

Application.EnableEvents = False
With Sheets("Base")
Set Rg = .[B1]
Decalage = Application.Match(Semaine, .Range("C1:N1"), 0)
Decalage = 5
End With

With Rg
.Value = Semaine
.Offset(, Decalage).Resize(33).Copy Rg
End With
Application.EnableEvents = True

Set Rg = Nothing


End Sub
'-------------------------------------


Salutations!




"Daniel" a écrit dans le message de news:
u%
Bonjour et merci à tous.
Ça résout ce problème. Je plante maintenant sur activecell. Je vais bien
trouver un contournement.
Cordialement.
Daniel
"Daniel" a écrit dans le message de news:
%
Bonsoir à tous.
J'ai bien mis la propriété TakeFocusOnClick à "False". L'erreur se
produit
à l'instruction :
Range("A1").Select
Voici l'intégralité du code :

Private Sub CommandButton1_Click()
Dim Semaine As String, Decalage As Integer
Sheets("Affichage").Select
If Len([B2]) = 8 Then
Semaine = "Semaine" & Right([B2], 1) + 1
Else
Semaine = "Semaine" & Right([B2], 2) + 1
End If
If Right(Semaine, 2) = 13 Then
Semaine = "Semaine1"
End If
Sheets("Base").Activate
Range("A1").Select '*********** Ca plante ici ************
[B1] = Semaine
Decalage = Application.Match(Semaine, Range("C1:N1"), 0)
ActiveCell.Offset(0, Decalage + 1).Select
Range(ActiveCell, ActiveCell.Offset(33, 0)).Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

Merci d'avance à tous les contributeurs.

Daniel

XL2003