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

Atteindre la 1ère cellule vide dans un autre onglet

18 réponses
Avatar
C15
Bonjour à tous et à toutes,

Dans un onglet, en colonne F (6ième colonne) si je saisis "oui", je veux
sélectionner la 1ère cellule vide de la colonne A (la ligne 4 est la
ligne d'en-tête de mon tableau) du feuillet "commande".

Quand j'exécute la procédure suivante :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Column = 6 And Target = "oui" Then
Sheets("Commande").Select
Range("A4").End(xlDown).Offset(1, 0).Select

End If

End Sub


on se retrouve bien sur le feuillet "Commande" mais cela bloque sur la
ligne
Range("A4").End(xlDown).Offset(1, 0).Select

"La méthode Select de la classe Range a échoué".

Merci de me dire où mon raisonnement n'est pas bon.

A+

C15

8 réponses

1 2
Avatar
Ellimac
Bonjour,

Le plantage ressemble fort à une impossibilité d'atteindre la zone ce qui
est le cas s'il n'y a rien sous A4. Il faut donc partir du bas :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Column = 6 And Target = "oui" Then
Sheets("Commande").Select
Range("A65000").End(xlUp).Offset(1, 0).Select

End If

End Sub


Camille

"C15" a écrit dans le message de news:
499331dc$0$28669$
Bonjour à tous et à toutes,

Dans un onglet, en colonne F (6ième colonne) si je saisis "oui", je veux
sélectionner la 1ère cellule vide de la colonne A (la ligne 4 est la ligne
d'en-tête de mon tableau) du feuillet "commande".

Quand j'exécute la procédure suivante :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Column = 6 And Target = "oui" Then
Sheets("Commande").Select
Range("A4").End(xlDown).Offset(1, 0).Select

End If

End Sub


on se retrouve bien sur le feuillet "Commande" mais cela bloque sur la
ligne
Range("A4").End(xlDown).Offset(1, 0).Select

"La méthode Select de la classe Range a échoué".

Merci de me dire où mon raisonnement n'est pas bon.

A+

C15


Avatar
Jacky
Bonjour,
'----------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 6 And UCase(Target) = "OUI" Then
Sheets("Commande").Activate
With Sheets("Commande")
derlig = .Cells(Rows.Count, "a").End(3).Row + 1
derlig = derlig + Abs(derlig < 5) * 3
.Cells(derlig, 1).Select
End With
End If
End Sub
'---------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj200902/cij6ZNch8m.xls

--
Salutations
JJ


"C15" a écrit dans le message de news:
499331dc$0$28669$
Bonjour à tous et à toutes,

Dans un onglet, en colonne F (6ième colonne) si je saisis "oui", je veux
sélectionner la 1ère cellule vide de la colonne A (la ligne 4 est la ligne
d'en-tête de mon tableau) du feuillet "commande".

Quand j'exécute la procédure suivante :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Column = 6 And Target = "oui" Then
Sheets("Commande").Select
Range("A4").End(xlDown).Offset(1, 0).Select

End If

End Sub


on se retrouve bien sur le feuillet "Commande" mais cela bloque sur la
ligne
Range("A4").End(xlDown).Offset(1, 0).Select

"La méthode Select de la classe Range a échoué".

Merci de me dire où mon raisonnement n'est pas bon.

A+

C15


Avatar
Jacky
Re...
Il se pourrait aussi que la sélection soit complètement inutile(comme
souvent), mais pour cela il faudra dire quel est l'objectif réelle de cette
macro.

--
Salutations
JJ


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

Bonjour,
'----------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 6 And UCase(Target) = "OUI" Then
Sheets("Commande").Activate
With Sheets("Commande")
derlig = .Cells(Rows.Count, "a").End(3).Row + 1
derlig = derlig + Abs(derlig < 5) * 3
.Cells(derlig, 1).Select
End With
End If
End Sub
'---------------------
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj200902/cij6ZNch8m.xls

--
Salutations
JJ


"C15" a écrit dans le message de
news:
499331dc$0$28669$
Bonjour à tous et à toutes,

Dans un onglet, en colonne F (6ième colonne) si je saisis "oui", je veux
sélectionner la 1ère cellule vide de la colonne A (la ligne 4 est la
ligne
d'en-tête de mon tableau) du feuillet "commande".

Quand j'exécute la procédure suivante :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Column = 6 And Target = "oui" Then
Sheets("Commande").Select
Range("A4").End(xlDown).Offset(1, 0).Select

End If

End Sub


on se retrouve bien sur le feuillet "Commande" mais cela bloque sur la
ligne
Range("A4").End(xlDown).Offset(1, 0).Select

"La méthode Select de la classe Range a échoué".

Merci de me dire où mon raisonnement n'est pas bon.

A+

C15







Avatar
C15
Bonsoir à tous et à toutes,


Le gagnant, je veux dire la gagnante est ...ISABELLE !

Sa formule marche parfaitement et comme le dit Elimac il faut en fait
partir du bas pour remonter vers la 1ère cellule occupée (je me rappelle
maintenant que je l'avais vu mais j'ai été bien incapable de m'en
souvenir et à plus forte raison de l'appliquer).


Merci encore à tous et à toute seule de votre aide.

A+

C15

Jacky a écrit :
Re...
Il se pourrait aussi que la sélection soit complètement inutile(comme
souvent), mais pour cela il faudra dire quel est l'objectif réelle de cette
macro.



Avatar
Sully
Bonjour,
(Je m’excuse de procéder ainsi, mais je n’arrive pas à mettre ma question en
ligne sur le forum, vous serez très de me répondre si vous le souhaitez)
---------
J’aimerais savoir si vous pouvez m’aider pour une macro ;

J’ai un classeur avec des données de certaines cellules que je vais
reporter dans un autre classeur.

Dans le classeur source, les données qui sont à copier sont toujours au même
endroit ex, en h 8, M12,d 10.

Ex, je dois copier la cellule h8 – m12- d10 dans le classeur receveur à
l’emplacement B5, b8, et b25 si elle vide, si elle est pleine , alors
décaler à droite en c5 c8 c9 et la fois d’après en d5,d8 d9.
C’est un classeur de résultat qui part de janvier à décembre, on va dire
qu’il y a 12 colonnes réceptrices.

On va dire que les deux fichiers sont ouverts.

Par contre le fichier donneur est un tableau qui se met à jour chaque mois.

- --
J’aimerai aussi avoir la syntaxe (pour plus tard) pour décaler non plus à
droite mais en dessous : B5 , puis b6 et b7 ect si la cellule est pleine.

J’étais un peu long, j’ai voulu être claire.
Cordialement.

Merci par anticipation.
Anatole BOYER (de l'ile de la Reunion)


--
B123


"isabelle" a écrit :

bonjour C15,

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 6 And Target = "oui" Then
Set plg = Sheets("Commande").Range("A" &
Sheets("Commande").Range("A65536").End(xlUp).Row + 1)
Application.Goto plg
End If
End Sub

isabelle

C15 a écrit :
> Bonjour Garnote,
>
> Tu n'as hélas pas plus de chance que Merguez07, cela ne marche pas, la
> cellule n'est pas sélectionnée et j'ai le message d'erreur "erreur
> définie par l'application ou par l'objet".
>
> Merci de ton aide
>
> A+
>
> C15
>
> garnote a écrit :
>> Salut,
>>
>> Change
>> Range("A4").End(xlDown).Offset(1, 0).Select
>> pour
>> ActiveSheet.Range("A4").End(xlDown).Offset(1, 0).Select
>>
>> Serge
>>
>>
>>
>>
>>
>> "C15" a écrit dans le message
>> de news: 499331dc$0$28669$
>>> Bonjour à tous et à toutes,
>>>
>>> Dans un onglet, en colonne F (6ième colonne) si je saisis "oui", je
>>> veux sélectionner la 1ère cellule vide de la colonne A (la ligne 4
>>> est la ligne d'en-tête de mon tableau) du feuillet "commande".
>>>
>>> Quand j'exécute la procédure suivante :
>>>
>>> Private Sub Worksheet_Change(ByVal Target As Excel.Range)
>>>
>>> If Target.Column = 6 And Target = "oui" Then
>>> Sheets("Commande").Select
>>> Range("A4").End(xlDown).Offset(1, 0).Select
>>>
>>> End If
>>>
>>> End Sub
>>>
>>>
>>> on se retrouve bien sur le feuillet "Commande" mais cela bloque sur
>>> la ligne
>>> Range("A4").End(xlDown).Offset(1, 0).Select
>>>
>>> "La méthode Select de la classe Range a échoué".
>>>
>>> Merci de me dire où mon raisonnement n'est pas bon.
>>>
>>> A+
>>>
>>> C15
>>
>>



Avatar
isabelle
bonjour Sully,

tu devrais abandonner l'interface CDO, va faire un tour vers ce lien
http://www.excelabo.net/mpfe/connexion.php (rubrique : Comment se
connecter au forum MPFE)
pour + d'info sur la meilleurs façon de se connecter au forum,

pour ton transfert de données je te propose cette macro (à adaptée)

Sub TestVersLaDroite()
Set Source = Workbooks("Classeur1").Sheets("Feuil1")
Set receveur = Workbooks("Classeur2").Sheets("Feuil1")

If receveur.Range("B5") = Empty Then
colonne = 2
Else
colonne = receveur.Range("IV5").End(xlToLeft).Column + 1
End If

receveur.Cells(5, colonne) = Source.Range("H8")
receveur.Cells(8, colonne) = Source.Range("M12")
receveur.Cells(9, colonne) = Source.Range("D10")

End Sub

isabelle



Sully a écrit :
Bonjour,
(Je m’excuse de procéder ainsi, mais je n’arrive pas à mettre ma question en
ligne sur le forum, vous serez très de me répondre si vous le souhaitez)
---------
J’aimerais savoir si vous pouvez m’aider pour une macro ;

J’ai un classeur avec des données de certaines cellules que je vais
reporter dans un autre classeur.

Dans le classeur source, les données qui sont à copier sont toujours au même
endroit ex, en h 8, M12,d 10.

Ex, je dois copier la cellule h8 – m12- d10 dans le classeur receveur à
l’emplacement B5, b8, et b25 si elle vide, si elle est pleine , alors
décaler à droite en c5 c8 c9 et la fois d’après en d5,d8 d9.
C’est un classeur de résultat qui part de janvier à décembre, on va dire
qu’il y a 12 colonnes réceptrices.

On va dire que les deux fichiers sont ouverts.

Par contre le fichier donneur est un tableau qui se met à jour chaque mois.

- --
J’aimerai aussi avoir la syntaxe (pour plus tard) pour décaler non plus à
droite mais en dessous : B5 , puis b6 et b7 ect si la cellule est pleine.

J’étais un peu long, j’ai voulu être claire.
Cordialement.

Merci par anticipation.
Anatole BOYER (de l'ile de la Reunion)





Avatar
isabelle
oups je voulais dire à adapter, pas taper svp,
isabelle

isabelle a écrit :
bonjour Sully,

tu devrais abandonner l'interface CDO, va faire un tour vers ce lien
http://www.excelabo.net/mpfe/connexion.php (rubrique : Comment se
connecter au forum MPFE)
pour + d'info sur la meilleurs façon de se connecter au forum,

pour ton transfert de données je te propose cette macro (à adaptée)

Sub TestVersLaDroite()
Set Source = Workbooks("Classeur1").Sheets("Feuil1")
Set receveur = Workbooks("Classeur2").Sheets("Feuil1")

If receveur.Range("B5") = Empty Then
colonne = 2
Else
colonne = receveur.Range("IV5").End(xlToLeft).Column + 1
End If

receveur.Cells(5, colonne) = Source.Range("H8")
receveur.Cells(8, colonne) = Source.Range("M12")
receveur.Cells(9, colonne) = Source.Range("D10")

End Sub

isabelle



Sully a écrit :
Bonjour,
(Je m’excuse de procéder ainsi, mais je n’arrive pas à mettre ma
question en ligne sur le forum, vous serez très de me répondre si
vous le souhaitez)
--------- J’aimerais savoir si vous pouvez m’aider pour une macro ;

J’ai un classeur avec des données de certaines cellules que je vais
reporter dans un autre classeur.

Dans le classeur source, les données qui sont à copier sont toujours
au même endroit ex, en h 8, M12,d 10.
Ex, je dois copier la cellule h8 – m12- d10 dans le classeur
receveur à l’emplacement B5, b8, et b25 si elle vide, si elle est
pleine , alors décaler à droite en c5 c8 c9 et la fois d’après en
d5,d8 d9.
C’est un classeur de résultat qui part de janvier à décembre, on va
dire qu’il y a 12 colonnes réceptrices.
On va dire que les deux fichiers sont ouverts.
Par contre le fichier donneur est un tableau qui se met à jour
chaque mois.
- -- J’aimerai aussi avoir la syntaxe (pour plus tard) pour
décaler non plus à droite mais en dessous : B5 , puis b6 et b7 ect si
la cellule est pleine.
J’étais un peu long, j’ai voulu être claire. Cordialement.
Merci par anticipation. Anatole BOYER (de l'ile de la Reunion)







Avatar
Anatole
Bonjour, Isabelle
Je te remercie pour ton aide précieuse.
Des données sont justes et fiables. j'ai réussi à adapter à mes fichiers.
J'ai aussi paramétré mon outlook express qui me présente le site différement
et beaucoup accesible.
Excuse moi pour le retard, pour le merci, la connextion fonctionnait pas.

Merci encore et a bientot surement.
"isabelle" a écrit dans le message de news:
%23yz1y$
bonjour Sully,

tu devrais abandonner l'interface CDO, va faire un tour vers ce lien
http://www.excelabo.net/mpfe/connexion.php (rubrique : Comment se
connecter au forum MPFE)
pour + d'info sur la meilleurs façon de se connecter au forum,

pour ton transfert de données je te propose cette macro (à adaptée)

Sub TestVersLaDroite()
Set Source = Workbooks("Classeur1").Sheets("Feuil1")
Set receveur = Workbooks("Classeur2").Sheets("Feuil1")

If receveur.Range("B5") = Empty Then
colonne = 2
Else
colonne = receveur.Range("IV5").End(xlToLeft).Column + 1
End If

receveur.Cells(5, colonne) = Source.Range("H8")
receveur.Cells(8, colonne) = Source.Range("M12")
receveur.Cells(9, colonne) = Source.Range("D10")

End Sub

isabelle



Sully a écrit :
Bonjour,
(Je m'excuse de procéder ainsi, mais je n'arrive pas à mettre ma question
en ligne sur le forum, vous serez très de me répondre si vous le
souhaitez)
---------
J'aimerais savoir si vous pouvez m'aider pour une macro ;

J'ai un classeur avec des données de certaines cellules que je vais
reporter dans un autre classeur.

Dans le classeur source, les données qui sont à copier sont toujours au
même endroit ex, en h 8, M12,d 10.
Ex, je dois copier la cellule h8 - m12- d10 dans le classeur receveur
à l'emplacement B5, b8, et b25 si elle vide, si elle est pleine , alors
décaler à droite en c5 c8 c9 et la fois d'après en d5,d8 d9.
C'est un classeur de résultat qui part de janvier à décembre, on va dire
qu'il y a 12 colonnes réceptrices.
On va dire que les deux fichiers sont ouverts.
Par contre le fichier donneur est un tableau qui se met à jour chaque
mois.
- --
J'aimerai aussi avoir la syntaxe (pour plus tard) pour décaler non plus
à droite mais en dessous : B5 , puis b6 et b7 ect si la cellule est
pleine.
J'étais un peu long, j'ai voulu être claire. Cordialement.
Merci par anticipation. Anatole BOYER (de l'ile de la Reunion)







1 2