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 Lionel, le forum,
il me faut écrire dans la feuille "RdV_transfert TEST tout en restant sur ma feuille "Appels" et sur ma cellule active
Alors il suffit d'exécuter cette macro :
Code:
Sub Transfert()
'se lance par les touches Ctrl + T
Dim Fdest As Worksheet, c As Range, tablo, s
Set Fdest = Sheets("RdV_transfert TEST")
Sheets("Appels").Activate
If Fdest.FilterMode Then Fdest.ShowAllData 'si la feuille est filtrée
Set c = Fdest.Cells(Rows.Count, 1).End(xlUp)(2) '1ère cellule vide
If c.Row < 3 Then Set c = Fdest.[A3]
If ActiveCell.Row < 3 Or ActiveCell.Column <> 15 Or IsEmpty(ActiveCell) Then Exit Sub
c = ActiveCell 'copie la valeur
On Error Resume Next 'si des recherches n'aboutissent paz
With c.Resize(, 11)
    tablo = .Value 'matrice, plus rapis
    s = Split(tablo(1, 1), " - ")
    tablo(1, 2) = Right(s(9), 16)
    tablo(1, 3) = CDate(Left(s(9), 8))
    tablo(1, 6) = Trim(Split(s(0), ":")(1))
    tablo(1, 7) = "" 'à préciser
    tablo(1, 8) = s(2)
    tablo(1, 9) = "" 'à préciser
    tablo(1, 10) = Trim(Split(s(0), ":")(0))
    tablo(1, 11) = "" 'à préciser
    .WrapText = True 'renvoi à la ligne
    .Value = tablo 'restitution
    .Rows.AutoFit 'ajustement hauteur
End With
MsgBox "Transfert effectué"
End Sub
Elle se lance par les touches Ctrl + T mais on peut aussi l'affecter à un bouton.

A+
 

Pièces jointes

Dernière édition:
Bonjour Lionel, le forum,

Alors il suffit d'exécuter cette macro :
Code:
Sub Transfert()
'se lance par les touches Ctrl + T
Dim Fdest As Worksheet, c As Range, tablo, s
Set Fdest = Sheets("RdV_transfert TEST")
Sheets("Appels").Activate
If Fdest.FilterMode Then Fdest.ShowAllData 'si la feuille est filtrée
Set c = Fdest.Cells(Rows.Count, 1).End(xlUp)(2) '1ère cellule vide
If c.Row < 3 Then Set c = Fdest.[A3]
If ActiveCell.Row < 3 Or ActiveCell.Column <> 15 Or IsEmpty(ActiveCell) Then Exit Sub
c = ActiveCell 'copie la valeur
On Error Resume Next 'si des recherches n'aboutissent paz
With c.Resize(, 11)
    tablo = .Value 'matrice, plus rapis
    s = Split(tablo(1, 1), " - ")
    tablo(1, 2) = Right(s(9), 16)
    tablo(1, 3) = CDate(Left(s(9), 8))
    tablo(1, 6) = Trim(Split(s(0), ":")(1))
    tablo(1, 7) = "" 'à préciser
    tablo(1, 8) = s(2)
    tablo(1, 9) = "" 'à préciser
    tablo(1, 10) = Trim(Split(s(0), ":")(0))
    tablo(1, 11) = "" 'à préciser
    .WrapText = True 'renvoi à la ligne
    .Value = tablo 'restitution
    .Rows.AutoFit 'ajustement hauteur
End With
MsgBox "Transfert effectué"
End Sub
Elle se lance par les touches Ctrl + T mais on peut aussi l'affecter à un bouton.

A+
Bonjour et MERCI Gérard 🙂

C'est nickel comme d'habitude :
J'ai 2 interrogations :
1 - "Sélectionnez une cellule en colonne "O" et appuyez sur les touches Ctrl + T"
J'ai à intégrer ton code dans mon code lol = trl+T obligatoire ?
VB:
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

ton code d'écriture dans la feuille "RdV_transfert TEST

fin de mon code
End Sub
2 - Ton code "Tablo" ne va pas poser de problème dans mon code ?

Je vais tester de mon côté.
Encore MERCI 🙂
 
Encore merci, effectivement, c'est bon, donc je peux intégrer dans mon code 🙂
Bon sang, j'y comprends rien :
tablo(1, 2) = Right(s(9), 16)
tablo(1, 3) = CDate(Left(s(9), 8))
tablo(1, 6) = Trim(Split(s(0), ":")(1))
tablo(1, 7) = "" 'à préciser
tablo(1, 8) = s(2)
tablo(1, 9) = "" 'à préciser
tablo(1, 10) = Trim(Split(s(0), ":")(0))
Si tu veux bien, à quoi ça correspond ? les chiffres, split, trim etc.
🙂
 
tablo(1, n) tu comprends ? n c'est le numéro de colonne., la numérotation commence à 1

s(n) c'est l'élément n du tableau s, la numérotation commence à 0.

Pour Split ou Trim ou CDate fait une recherche sur le web (ou XLD).
OUI, mais imaginons que les colonnes de mon fichier changent et ce que ne soit plus dans "Appels" la cellule active en colonne "O" mais en col "L", il faudrait que je modifie comment ?
🙂
 
Bon, ça j'ai trouvé lol 🙂
Re-Gérard 🙂
Tout nickel vrtaiment merci 🙂
J'ai modifié la Feuille "Appel", permetra certainement de simplifier ton code ?

tablo(1, 2) = Right(s(9), 16) 'date RdV
peut se prendre directement sur la cellule col K ligne active de la feuille Appels

tablo(1, 3) = CDate(Left(s(9), 8))'date appel = NE PAS MODIFIER
tablo(1, 6) = Trim(Split(s(0), ":")(1)) 'nom du prospect
peut se prendre directement sur la cellule col B ligne active de la feuille Appels

tablo(1, 7) = "" 'à préciser 'Tel du prospect
Si Col E ligne activeNON vide se prendre directement sur la cellule col E ligne active de la feuille Appels
Si Col E ligne active vide se prendre directement sur la cellule col F ligne active de la feuille Appels


tablo(1, 8) = s(2) 'nom réseau
peut se prendre directement sur la cellule col A ligne active de la feuille Appels
ou Feuille "SMS RdV" cellule C7


tablo(1, 9) = "" 'tel réseau
se prend Feuille "SMS RdV" cellule B6

tablo(1, 10) = Trim(Split(s(0), ":")(0)) 'Prénom commerciale= NE PAS MODIFIER
tablo(1, 11) = "" 'Tel commerciale
se prend Feuille "SMS RdV" cellule D4
Je joins le classeur modifé
Ta patience va devenir légendaire.
Merci Gérard 🙂
 

Pièces jointes

Le problème initial &tait de copier uniquement la cellule active de la feuille "Appels".

Maintenant tu veux également copier plusieurs cellules de la feuille "SMS RdV".

Tu dois être capable d'effectuer les modifications que tu indiques au post #23.
 
- 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