Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

  • 01 Appels vers transfert.xlsm
    28.3 KB · Affichages: 2
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
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:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr à toi, j'avais oublié d'enlever le code dans une feuille , j'ai remis le fichier sans codes lol
 

job75

XLDnaute Barbatruc
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+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
mea culpa
Dans la feuille Résultat attendu, j'ai mis le résultat attendu pour les 3 cellules.
Mais le test est à faire uniquement sur la cellule active (pas la colonne).
Je remets le fichier avec résultat attendu pour 1 cellule.
 

Pièces jointes

  • 01 Appels vers transfert.xlsm
    28.3 KB · Affichages: 2

job75

XLDnaute Barbatruc
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

  • 01 Appels vers transfert.xlsm
    37.5 KB · Affichages: 2

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
a Gérard, toujurs là ... Encore merci
Je regarde...
Bonne nuit
 

job75

XLDnaute Barbatruc
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

  • 02 Appels vers transfert.xlsm
    37.5 KB · Affichages: 5

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Merci Gérard
C'est bien celui-là qui copie la cellule active dont j'ai besoin.
Je regarde plus avant...
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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 )
 

Discussions similaires

Réponses
12
Affichages
332
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…