XL 2021 Ecrire dans une autre feuille cas trop compliqué pour moi

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous 🙂

Début octobre, j'avais créé un fil pour "Ecrire dans une une autre feuille.

Mon Cher Gérard (job75) a eu la gentillesse de me fournir la solution, encore merci à toi 🙂
J'avais pensé que je pourrais l'appliquer en l'adaptant à mon besoin.

Que nenni lol, malgré toutes mes tentatives, je n'y arrive pas (mes neurones ne suivent pas 🙂)
Il est vrai que mon besoin est ardu (enfin pour moi)

Je me permets de vous le soumettre en espèrant que vous pourrez m'aider...
A partir de la feuille Appels "CELLULE "ACTIVE"
Mon besoin
: Je voudrais envoyer certaines des informations contenues dans cette cellule dans ma feuille "RdV_transfert TEST" NON ACTIVE

Dans le classeur joint, j'ai détaillé mon besoin dans la feuille "Besoin"
J'ai tenté de coller ici mais je n'arrive pas à présenter de façon claire et compréhensive, c'est pourquoi, si vous le voulez bien, je vous remercie de télécharger le classeur.

Espérant votre attention pour ma demande, je vous en remercie par avance.
Entre temps, je continue mes élucubrations comme dirait Antoine lol 🙂
 

Pièces jointes

Dernière édition:
Bonjour,

Un milliard de fois qu'on te dit que le Select est fortement déconseillé, et donc le ActiveCell aussi. 😉

Pour écrire dans une cellule, tu peux utiliser Range("A1") (par exemple Range("A1").Value="Salut !"), qui va écrire dans la feuille active.

Tu peux aussi utiliser .Range("A1") qui va utiliser la feuille définie dans With (par exemple With Sheets("Feuil1") pour écrire dans la feuille nommée "Feuil1").

Une fois que tu sais ça, tu peux écrire (et lire) dans la cellule de la feuille que tu veux. 😉



Tu peux aussi écrire dans des plages nommées ou dans des TS, ainsi pas besoin de s'occuper de la feuille où ça se trouve.




Une astuce qui va te plaire : si tu n'es pas sûr de toi et donc pas certain de taper au bon endroit, avant d'écrire ou de lire, tu peux commencer par un... Select (mais juste le temps de contrôler que tu tapes bien à l'endroit que tu veux).


Bon week-end
🖖
 
Dernière édition:
Bonjour,

Un milliard de fois qu'on te dit que le Select est fortement déconseillé, et donc le ActiveCell aussi. 😉

Pour écrire dans une cellule, tu peux utiliser Range("A1") (par exemple Range("A1").Value="Salut !"), qui va écrire dans la feuille active.

Tu peux aussi utiliser .Range("A1") qui va utiliser la feuille définie dans With (par exemple With Sheets("Feuil1") pour écrire dans la feuille nommée "Feuil1").

Une fois que tu sais ça, tu peux écrire (et lire) dans la cellule de la feuille que tu veux. 😉



Tu peux aussi écrire dans des plages nommées ou dans des TS, ainsi pas besoin de s'occuper de la feuille où ça se trouve.
Bjr à toi, j'avais oublié d'enlever le code dans une feuille , j'ai remis le fichier sans codes lol 🙂
 
Bonsoir Lionel, TooFatBoy,

Dans ce problème il ne s'agit pas de traiter la cellule active mais de transférer toutes les données d'une feuille dans une autre.

Pour cela il faudra placer une macro Worksheet_Activate dans la feuille "RdV_transfert TEST".

Ensuite en utilisant la fonction Split on extraira les données de la colonne A vers les colonnes B à K.

Mais justement dans le résultat attendu les numéros de téléphone des colonnes G I K ne se retrouvent pas en colonne A, il faut revoir cette question.

A+
 
Bonsoir Gérard 🙂
Si, si 🙂
Il s'agit bien de prendre certaines infos contenues dans la cellule active de la feuille "Appels" par exemple après clic sur la cellule A3 pour les mettre dans la feuille "RdV_transfert TEST" NON ACTIVE.
🙂
 
Dernière édition:
Voici la macro traitant toute la colonne mais sans récupérer les 3 numéros de téléphone :
VB:
Private Sub Worksheet_Activate()
Dim tablo, i&, s
Application.ScreenUpdating = False
On Error Resume Next 'si des recherches n'aboutissent paz
Rows("3:" & Rows.Count).Delete 'RAZ
With Sheets("Appels")
    .Range("O3:O" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Copy [A3] 'copier-coller
End With
With Me.UsedRange
    .WrapText = True 'renvoi à la ligne
    .Rows.AutoFit 'ajustement hauteur
    tablo = .Columns(1).Resize(, 11) 'matrice, plus rapis
    For i = 3 To UBound(tablo)
        s = Split(tablo(i, 1), " - ")
        tablo(i, 2) = Right(s(9), 16)
        tablo(i, 3) = CDate(Left(s(9), 8))
        tablo(i, 6) = Trim(Split(s(0), ":")(1))
        tablo(i, 8) = s(2)
        tablo(i, 10) = Trim(Split(s(0), ":")(0))
    Next
    .Value = tablo 'restitution
End With
End Sub
J'attends toujours les explications pour les numéros de téléphone.

Bonne nuit.
 

Pièces jointes

Voici la macro traitant toute la colonne mais sans récupérer les 3 numéros de téléphone :
VB:
Private Sub Worksheet_Activate()
Dim tablo, i&, s
Application.ScreenUpdating = False
On Error Resume Next 'si des recherches n'aboutissent paz
Rows("3:" & Rows.Count).Delete 'RAZ
With Sheets("Appels")
    .Range("O3:O" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Copy [A3] 'copier-coller
End With
With Me.UsedRange
    .WrapText = True 'renvoi à la ligne
    .Rows.AutoFit 'ajustement hauteur
    tablo = .Columns(1).Resize(, 11) 'matrice, plus rapis
    For i = 3 To UBound(tablo)
        s = Split(tablo(i, 1), " - ")
        tablo(i, 2) = Right(s(9), 16)
        tablo(i, 3) = CDate(Left(s(9), 8))
        tablo(i, 6) = Trim(Split(s(0), ":")(1))
        tablo(i, 8) = s(2)
        tablo(i, 10) = Trim(Split(s(0), ":")(0))
    Next
    .Value = tablo 'restitution
End With
End Sub
J'attends toujours les explications pour les numéros de téléphone.

Bonne nuit.
a Gérard, toujurs là ... Encore merci 🙂
Je regarde...
Bonne nuit 🙂
 
Avant d'aller dormir.

Si l'on veut copier uniquement la cellule active de la feuille "Appels" ce n'est guère plus compliqué :
VB:
Private Sub Worksheet_Activate()
Dim tablo, i&, s
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next 'si des recherches n'aboutissent paz
Rows("3:" & Rows.Count).Delete 'RAZ
Sheets("Appels").Activate
If ActiveCell.Row > 2 And ActiveCell.Column = 15 Then [A3] = ActiveCell 'copie la valeur
Me.Activate
With Me.UsedRange
    .WrapText = True 'renvoi à la ligne
    .Rows.AutoFit 'ajustement hauteur
    tablo = .Columns(1).Resize(, 11) 'matrice, plus rapis
    For i = 3 To UBound(tablo)
        s = Split(tablo(i, 1), " - ")
        tablo(i, 2) = Right(s(9), 16)
        tablo(i, 3) = CDate(Left(s(9), 8))
        tablo(i, 6) = Trim(Split(s(0), ":")(1))
        tablo(i, 8) = s(2)
        tablo(i, 10) = Trim(Split(s(0), ":")(0))
    Next
    .Value = tablo 'restitution
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
 

Pièces jointes

Avant d'aller dormir.

Si l'on veut copier uniquement la cellule active de la feuille "Appels" ce n'est guère plus compliqué :
VB:
Private Sub Worksheet_Activate()
Dim tablo, i&, s
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next 'si des recherches n'aboutissent paz
Rows("3:" & Rows.Count).Delete 'RAZ
Sheets("Appels").Activate
If ActiveCell.Row > 2 And ActiveCell.Column = 15 Then [A3] = ActiveCell 'copie la valeur
Me.Activate
With Me.UsedRange
    .WrapText = True 'renvoi à la ligne
    .Rows.AutoFit 'ajustement hauteur
    tablo = .Columns(1).Resize(, 11) 'matrice, plus rapis
    For i = 3 To UBound(tablo)
        s = Split(tablo(i, 1), " - ")
        tablo(i, 2) = Right(s(9), 16)
        tablo(i, 3) = CDate(Left(s(9), 8))
        tablo(i, 6) = Trim(Split(s(0), ":")(1))
        tablo(i, 8) = s(2)
        tablo(i, 10) = Trim(Split(s(0), ":")(0))
    Next
    .Value = tablo 'restitution
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Merci Gérard 🙂
C'est bien celui-là qui copie la cellule active dont j'ai besoin.
Je regarde plus avant...
🙂
 
Bonjour Gérard 🙂, Bonjour Le Forum 🙂

Réveillé un peu tôt, j'ai regardé et bien sûr ton code fonctionne bien.

Dans mon fichier de travail, le code dont j'ai besoin sera inséré dans un code existant qui sera en cours d'exécution, genre :
Sub Gérard()
début de mon code
code d'écriture dans la feuille "RdV_transfert TEST
fin de mon code
End Sub

C'est pourquoi il me faut écrire dans la feuille "RdV_transfert TEST tout en restant sur ma feuille "Appels" et sur ma cellule active (je m'en sers pour terminer l'exécution de mon code).

Toujours dans mon fichier de travail
Il faudrait que l'écriture dans dans la feuille "RdV_transfert TEST se face Sous dernière cellule NON VIDE.

Si c'est possible, il me semble que pour les n° de téléphone, je pourrai compléter (enfin je crois lol 🙂)
🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour