Doublons des nombres d'une plage

imadaissaoui - 26 sept. 2012 à 20:47
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 26 sept. 2012 à 22:14
Bonjour,
j'aimerais bien savoir comment programmer sous VBA un code qui sert à calculer les redondances pour chaque nombre d'une plage de cellules dans un classeur1 et coller le résultat obtenu dans un autre classeur 2 sur le même dossier.
et copier aussi un autre résultat qui provient du classeur2 et le coller au classeur1.
je suis débutant en VBA et j'ai vraiment besoin d'établir ce code, si vous arrivez à m'écrire un code exemple je serais trés reconnaissant.
si j'étais pas clair vous trouvez ci-joint le lien de deux classeurs qui expliquent bien la situation demandée:

http://www.4shared.com/rar/TPeHdrFZ/Classeurs_1et_2.html

mille fois merci d'avance.

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 sept. 2012 à 21:04
Bonjour,
il n'était pas utile d'ouvrir une nouvelle discussion. L'autre aurait été déplacée.
si vous arrivez à m'écrire un code exemple je serais trés reconnaissant.

Non ! Nous ne sommes pas là pour t' "écrire ton code", mais uniquement pour t'y aider.
Qu'as-tu au moins tenté ?
Dans ton autre discussion, par exemple, MPI t'as orienté vers l'une des solutions possibles.
Qu'en as-tu fait ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
imadaissaoui
26 sept. 2012 à 21:31
Bonjour ucfoutu,
je viens de commencer à travailler avec VBA, je suis débutant;aujourd'hui j'ai recourt à ce forum là simplement lorsque je me suis bloqué quelque part bien sûr avec mon code.
c'est votre aide que je demande, et je n'attends pas que vous m'écrivez le code, si vous revenez à mon message: je demande un code exemple, type, qui m'aide à l'adapter et établir le mien.
l'effort que j'ai fait ucfoutu le voilà mais dommage il ne fonctionne plus et je sais pas pourqoui( il me donne pas le résultat escompté);

code:

Sub OpenOfficeToDsgTool()

Dim x As Byte, c As Variant
For c = 15 To 23
Workbooks("book1").Worksheets("sheet1").Activate
Set recherch = Workbooks("book1").Worksheets("Sheet1").Cells(c, 2)
x = Application.CountIf(Range("B15:B23"), recherch.Value)
DSGtoolOpen
If recherch.Value = 5 Then
'Workbooks("book2").Worksheets("sheet1")
ActiveWorkbook.Worksheets("sheet1").Range("C15").Value = x
ElseIf recherch.Value = 7 Then
ActiveWorkbook.Worksheets("sheet1").Range("C16").Value = x
ElseIf recherch.Value = 10 Then
ActiveWorkbook.Worksheets("sheet1").Range("C17").Value = x
ElseIf recherch.Value = 15 Then
ActiveWorkbook.Worksheets("sheet1").Range("C18").Value = x
ElseIf recherch.Value = 20 Then
ActiveWorkbook.Worksheets("sheet1").Range("C19").Value = x
ElseIf recherch.Value = 25 Then
ActiveWorkbook.Worksheets("sheet1").Range("C20").Value = x
ElseIf recherch.Value = 30 Then
ActiveWorkbook.Worksheets("sheet1").Range("C21").Value = x
ElseIf recherch.Value = 3 Then
ActiveWorkbook.Worksheets("sheet1").Range("C14").Value = x
End If
Next c
DSGtoolToVNS

End Sub


Sub DSGtoolOpen()
On Error Resume Next
Workbooks("book2").Activate

If Err <> 0 Then
Workbooks.Open ("C:\users\stagiaire\desktop\book2")

End If

End Sub

Sub DSGtoolToVNS()

Workbooks("book2").Worksheets("sheet1").Range("B32").Select
Selection.Copy
ThisWorkbook.Sheets("sheet1").Activate
Workbooks("book1").Worksheets("sheet1").Range("C34").Select
Selection.PasteSpecial Paste:=xlPasteValues

End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 sept. 2012 à 22:14
Bien ...
1) il sera bon que tu nous présente ton code indenté et entre balises code (3ème icône à partir de la droite). Cela ne demande aucune connaissance en développement.
2) sous VBA, on ne travaille pas à coups de Select, Activate, etc ... mais directement par pointage sur les objets de Excel.
Ainsi (et uniquement pour exemple) :
Workbooks("book1").Worksheets("sheet1").Activate
Set recherch = Workbooks("book1").Worksheets("Sheet1").Cells(c, 2)
x = Application.CountIf(Range("B15:B23"), recherch.Value)

est tout simplement :
with Workbooks("book1").Worksheets("sheet1")
  x = Application.CountIf(.Range("B15:B23"),.cells(c,2).value)
end with

3) apprends à typer convenablement
-- c est dans ton exemple à typer en integer.
-- tu n'as pas typé ta variable recherch (on n'en a d'ailleurs même pas besoin) !
4) MPi (ton autre discussion) t'a conseillé de trié. On n'en voit pas le moindre essai. Et( pourtant, cela faciliterait grandement la vie du novice que tu déclares être.

Voilà ! ce n'est qu'un début, une mise sur rail indispensable pour développer proprement. Si tu vas dans ce sens-là, je t'épaulerai. Si tu choisis une autre direction, ce sera ton choix, mais sans moi (suis trop vieux et maintenant trop usé pour me prêter à de tels égarements).
A toi de voir.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous