Raccourcir une formule

zeltron24

XLDnaute Impliqué
Bonsoir à tous,

J'ai un petit souci de formule, dont voici le code :
Code:
Dim r As Range
Dim n As Byte

' Les Produits
Set r = su.Columns(2).Find(Me.CmbAfficher.Value, , xlValues, xlWhole)
If Not r Is Nothing Then
    test = True
    st.Range("A22").Value = r.Offset(0, 1)
    st.Range("A23").Value = r.Offset(1, 1)
    st.Range("A24").Value = r.Offset(2, 1)
    st.Range("A25").Value = r.Offset(3, 1)
    st.Range("A26").Value = r.Offset(4, 1)
    st.Range("A27").Value = r.Offset(5, 1)
    st.Range("A28").Value = r.Offset(6, 1)
    st.Range("A29").Value = r.Offset(7, 1)
    st.Range("A30").Value = r.Offset(8, 1)
    st.Range("A31").Value = r.Offset(9, 1)
    st.Range("A32").Value = r.Offset(10, 1)
    st.Range("A33").Value = r.Offset(11, 1)
    .......
    st.Range("A55").Value = r.Offset(22, 1)
End If
(Diminué pour la cause)
Voilà, je souhaiterai trouver un code moins long si cela est faisable. Le but étant de recopié les valeurs de la colonne A22 à A55 dans une autre feuille. Cette formule marche bien mais j'ai 3 colonnes à recopier.
 

Staple1600

XLDnaute Barbatruc
Re : Raccourcir une formule

Bonsoir à tous

zeltron24
Tu sais ce que je m'apprête à écrire...;)

On teste sur quoi nos éventuelles solutions ? Dans le vide ? Ou sur le fichier exemple que tu as , dans un moment d'égarement manifeste, oublier de joindre à ta discussion ?

Donc je me jette dans le vide et j'ai répondu à ta question
Code:
Sub z()
 'Le but étant de recopié les valeurs de la colonne A22 à A55 dans une autre feuille.
 Dim fa As Worksheet, fb As Worksheet
 Set fa = Feuil1: Set fb = Feuil2
 fa.[A22:A55].Copy fb.[A1]
End Sub
 
Dernière édition:

zeltron24

XLDnaute Impliqué
Re : Raccourcir une formule

bonsoir Staple1600

Je savais que si tu me répondais, sans fichier joint tu aurais trouvé une solution.:cool:
Mais bon voici le fichier en question pour plus de facilité.

Je désire grâce à la liste déroulante de la feuille "Horaires" Editer un ticket pouvoir recopier les valeurs de la feuille "Suivi" en fonction du numéro de ticket sélectionné, recopier sur la feuille "Horaires" les éléments en A22:A55 et C22:C55 en sachant que il n'y a pas forcément 33 articles.
Voici un commentaire un peu plus clair ;)
 

Pièces jointes

  • Horaire Magasin.xlsm
    130.1 KB · Affichages: 68
  • Horaire Magasin.xlsm
    130.1 KB · Affichages: 65
  • Horaire Magasin.xlsm
    130.1 KB · Affichages: 74
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Raccourcir une formule

Re

zeltron24
??
Sauf que mon code ne tient pas compte de ceci
' Les Produits
Set r = su.Columns(2).Find(Me.CmbAfficher.Value, , xlValues, xlWhole)
et que je ne connais pas le noms des feuilles ...:rolleyes:

mais bon tant mieux, si cela t'a aidé.
 

zeltron24

XLDnaute Impliqué
Re : Raccourcir une formule

Re,

Staple1600
En suivant tes discussions sur les fils j'ai constaté que tu préconise le travail par soit même. Ce qui est juste. Vous n'etes pas là pour faire tout notre travail.
Certes, tu nous es d'un grand secours par tes solutions justes.
J'ai voulu par moi même arrivé à mes fins.
N'y parvenant pas j'ai fait appel à vos connaissances. Tu as eu la gentillesse de te pencher sur mon cas et je t'en remercie vivement.
J'avais espéré avec uniquement la modif du code parvenir à un résultat correct.En me débrouillant du mieux que je pouvais. Hors, j'ai fait pire que mieux et j'ai donc mis le fichier en ligne afin que l'on puisse m'expliquer mon erreur.
Voila je voulais éclaircir la situation.
Encore merci pour ton aide
Bonne fin de soirée.
Cordialement
Zeltron24
 

zeltron24

XLDnaute Impliqué
Re : Raccourcir une formule

Re,

Effectivement je l'ai remanié.
J'ai essayé avec ce code :
Code:
Dim rg As Integer
Dim of As Integer
rg = 22
of = 0
Set su = Sheets("Suivi")

' Les Produits
Set r = su.Columns(2).Find(Me.CmbAfficher.Value, , xlValues, xlWhole)
'n = Cells(Range("D:D").End(xlDown).Row + 1, 1).Select
'MsgBox n
If Not r Is Nothing Then
    test = True
    
    For rg = 22 To 55
    For of = 0 To 55
    st.Range("A" & rg).Value = r.Offset(of, 1)
    rg = rg + 1
    of = of + 1
    Next of
    Next rg
End If

Le souci c'est que je réinscrit incorrectement les données de la feuille "Suivi"
1 ligne sur 2 et répétitif

Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    40.9 KB · Affichages: 69
  • Capture.JPG
    Capture.JPG
    40.9 KB · Affichages: 68

zeltron24

XLDnaute Impliqué
Re : Raccourcir une formule

Re
Le code posté en #9 est un code que j'avais essayé
J'ai remis ton code en service, mais je ne peux arriver qu'à recopier la plage A22:A55

Code:
 Dim fa As Worksheet, fb As Worksheet
 Set fa = Horaires: Set fb = Suivi
 fb.[D2].Copy fa.[A22:A55]
 fb.[E2].Copy fa.[C22:C55]

La plage en C ne se recopie pas
Je te souhaite une bonne nuit j’arrête là pour maintenant
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Raccourcir une formule

Re

Mon petit zeltron24, tu as des problèmes de lunettes...:rolleyes:
Je parle de ce code-ci!
Code:
Sub Bouton1_Cliquer()
Dim dl&, f As Worksheet: Set f = Sheets("Saisies")
Application.ScreenUpdating = False
f.Range(f.Cells(3, 2), f.Cells(3, 3)(8)).Copy
With Sheets("Archivage")
    .Cells(Rows.Count, 3).End(3)(2).PasteSpecial xlValues, xlNone, False, True
    dl = .Cells(Rows.Count, 3).End(3)(-0).Row
    .Cells(dl, 1) = Date: .Cells(dl, 2) = "Course " & f.[E2].Text
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
qui est dans le fil que je cite dans le message #8.
(où tu as d'ailleurs participé!!
Et c'est là que le fichier que tu as joint pour Guido ressemble à celui de ce fil d'où l'air de déjà vu évoqué tout à l'heure ;) )
 
Dernière édition:

zeltron24

XLDnaute Impliqué
Re : Raccourcir une formule

Bonjour Staple1600,

J'espère que je ne t'ai pas fait faire de cauchemars.:;)
Le Code de ton dernier post #12 (Je l'avais déjà testé, j'ai regardé sur mes essais fait auparavant) ) il fait exactement le même que celui que j'ai mis en post #11
CaD qu'il me copie bien les valeurs sauf en colonnes E et F de la feuille "Suivi" ou celle ci sont copié en E215 et F215
Pour être clair, les valeurs de la colonne C et D de la feuille "Horaires" sont recopiées dans la feuille "Suivi" bien plus bas (En E215 pour C et F215 pour D). Sinon le reste est correct.
De plus, lors de la réédition d'un ticket la recopie ne s'effectue pas correctement. (voir image post #9)
 

Staple1600

XLDnaute Barbatruc
Re : Raccourcir une formule

Bonjour à tous

zeltron24
Rechausses tes lunettes, j'avais bien écrit adapter ;)
Adaptes le code que j'avais proposé dans ce fil
Ton code du message #9 n'est pas une adaptation, c'est un autre code.

Ce genre de chose peut s'appeler adaptation de mon précédent code ;)
Je te laisse, si cela te tente, la poursuivre
Code:
Sub DebutAdaptation()
Dim dl&, x&, f As Worksheet: Set f = Sheets("Horaires")
Application.ScreenUpdating = False
x = f.Cells(55, "A").End(3).Row
f.Range(f.Cells(22, "A"), f.Cells(x, "A")).Copy
With Sheets("Suivi")
    dl = .Cells(Rows.Count, 3).End(3)(3).Row
    .Cells(dl, "C").PasteSpecial xlValues

    f.Range(f.Cells(22, "C"), f.Cells(x, "E")).Copy
    .Cells(dl, "D").PasteSpecial xlValues
dl = .Cells(Rows.Count, 3).End(3)(-0).Row
.Cells(dl, 1) = Date: .Cells(dl, 2) = f.[M26].Text: .Cells(dl, 7) = f.[G46].Text
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

zeltron24

XLDnaute Impliqué
Re : Raccourcir une formule

re,

J'ai bien adapté ton code et réhaussé mes lunettes mais les valeurs en E et F ne sont pas en bonne place rapport à mon post 13.
Dans tous les cas j'ai ce problème.
As tu essayé sur ton PC mon fichier?
 

Discussions similaires

Statistiques des forums

Discussions
312 094
Messages
2 085 244
Membres
102 834
dernier inscrit
nadusha