Bonjour à tous,
J'ai optimisé une macro qui avait déjà été programmé par quelqu'un d'autres. Je vous explique son fonctionnement.
J'utilise un classeur source et un classeur destination.
Dans le classeur source je vais rechercher des valeurs qui sont à intervalle régulier.
J'utilise donc ce code ci qui fonctionne très bien. :
Or dans une certaine feuille, j'ai besoin de récupérer des données qui ne sont pas a intervalle régulier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub CopyConfocalite(classeurEntree As Workbook, laser As String, destinationColumn As String) Dim rowNumber As Range Dim source As Worksheet, destination As Worksheet Set source = classeurEntree.Worksheets("Confocalite") Set destination = classeurSortie.Worksheets("confocalite") ' Numero de ligne du lambda correspondant Set rowNumber = source.Range("B:B").Cells.Find(What:=laser) If (source.Range("E" & rowNumber.Row + 5).Value) = "" Then idest = 0 Else idest = source.Range("E" & rowNumber.Row + 5).Value End If destination.Range(destinationColumn & destination.Range(destinationColumn & source.Rows.Count).End(xlUp).Row + 1) = idest ' Import date destination.Range("D" & destination.Range(destinationColumn & source.Rows.Count).End(xlUp).Row) = Now ' Source file destination.Range("E" & destination.Range(destinationColumn & source.Rows.Count).End(xlUp).Row) = classeurEntree.Path & "\" & classeurEntree.Name
J'ai donc écris ce code qui ne marche pas :
Or le code ne fonctionne pas, il ne va pas me chercher les bonnes valeurs. Faut-il faire une boucle ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Sub CopyPuissanceéchantillons(classeurEntree As Workbook, laser As String, destinationColumn As String) Dim rowNumber As Range Dim source As Worksheet, destination As Worksheet Set source = classeurEntree.Worksheets("data_objectifs") Set destination = classeurSortie.Worksheets("Puissance échantillon") Set rowNumber = source.Range("I:I").Cells.Find(What:=laser) If (source.Range("I" & rowNumber.Row + 12).Value) = "" Then idest = 0 Else idest = source.Range("I" & rowNumber.Row + 12).Value End If If (source.Range("I" & rowNumber.Row + 17).Value) = "" Then idest = 0 Else idest = source.Range("I" & rowNumber.Row + 17).Value End If If (source.Range("I" & rowNumber.Row + 22).Value) = "" Then idest = 0 Else idest = source.Range("I" & rowNumber.Row + 22).Value End If destination.Range(destinationColumn & destination.Range(destinationColumn & source.Rows.Count).End(xlUp).Row + 1) = idest ' Import date destination.Range("D" & destination.Range(destinationColumn & source.Rows.Count).End(xlUp).Row) = Now ' Source file destination.Range("E" & destination.Range(destinationColumn & source.Rows.Count).End(xlUp).Row) = classeurEntree.Path & "\" & classeurEntree.Name End Sub
Partager