cathodique
XLDnaute Barbatruc
Bonsoir Le Forum,
Afin de saisir mes relevés de mesures, je prépare une feuille excel par macro en récupérant les cordonnées de mes points d’une feuille nommée « coordonnées », puis je transfère ces données sur une autre feuille nommées « BD ».
Mais je voudrai compléter mon code, afin qu’en préparant ma feuille de saisie nommée « relevé », je puisse récupérer de la feuille BD certaines valeurs déjà saisies dans de précédents relevés pour des points communs.
Dans l’entête de la feuille « relevé » figure le nom de l’ouvrage en B2 et sa limite en B3. Les relevés sont effectués par « ligne » et par « tronçon » (appelés « limite »).
En essayant d'être clair, je donne un exemple :
Sur la feuille relevé, les données concernant l’ouvrage (nom en B2=T1) sont saisis en colD et colE, ceux de l’ouvrage voisin (nom en colF=G1) sont en colH et colI. Ils sont archivés en feuille BD respectivement en col I, J, K, M et N.
J’ai déjà saisi et archivé des relevés pour l’ouvrage ‘’G1’’ (01/08/1993), les noms des points communs à 2 ouvrages comportent tous les lettres P et C. Donc pour ces points il y aura Double ou quadruple valeurs (une valeur ou 2 pour chaque ouvrage).(voir feuille BD, lignes en jaune)
En passant à un autre ouvrage par exemple ‘’T1’’, je retrouve en colonne F ‘’G1’’ en correspondance avec le type ‘’PC’’ (colonne C).
Je sais qu’il faut passer par des filtres. Mais je bloque pour effectuer des filtres successifs et surtout pour les arguments des cellules qui contiennent les lettres P et C. et pour récupérer l’adresse exacte où l’on va mettre les données récupérées.
Je ne sais pas trop si j’ai bien exposé mon problème en vous remerciant beaucoup pour votre aide.
Cordialement,
Afin de saisir mes relevés de mesures, je prépare une feuille excel par macro en récupérant les cordonnées de mes points d’une feuille nommée « coordonnées », puis je transfère ces données sur une autre feuille nommées « BD ».
Mais je voudrai compléter mon code, afin qu’en préparant ma feuille de saisie nommée « relevé », je puisse récupérer de la feuille BD certaines valeurs déjà saisies dans de précédents relevés pour des points communs.
Code:
Sub Preparer_New() 'code pour constituer feuille de saisie
Dim ligne As Long, j As Long, k As Long, Lastlig As Long
Dim i As Long
Dim o As Object, bd As Object
Dim Tb, Res()
Dim Dercol As Integer
Dim Val1 As String, Val2 As String
Application.EnableEvents = False
Application.ScreenUpdating = False
Set bd = Sheets("Cordonnées") 'définit l'onglet bd
dl = bd.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit derlg col1 onglet bd
Set o = Sheets("Relevé")
'Dans la variable tableau Tb
With bd
Lastlig = .Cells(.Rows.Count, 1).End(xlUp).Row
Tb = .Range("A2:J" & Lastlig)
End With
With o
Dercol = o.Range("A5").End(xlToRight).Column
Val1 = .Range("B2") 'ouvrage
Val2 = .Range("B3") 'LIMITE
For i = 1 To Lastlig - 1
'
If Tb(i, 3) = Val1 And Tb(i, 4) = Val2 Then
j = j + 1
ReDim Preserve Res(1 To 12, 1 To j)
Res(1, j) = j
Res(2, j) = Round(Tb(i, 5), 2) 'PK
Res(3, j) = Tb(i, 6) 'type
Res(6, j) = Tb(i, 7) 'OUVRAGE VOISIN
Res(7, j) = Tb(i, 8) 'PK VOISIN
Res(12, j) = Tb(i, 9) 'OBSERVATION
End If
Next i
Lastlig = .Cells(.Rows.Count, 1).End(xlUp).Row
If Lastlig > 8 Then .Range("A8:L" & Lastlig).Clear
If j > 0 Then .Range("A8").Resize(j, 12) = Application.Transpose(Res)
.Range("A8").Resize(j, Dercol).Borders.Weight = xlThin
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
En essayant d'être clair, je donne un exemple :
Sur la feuille relevé, les données concernant l’ouvrage (nom en B2=T1) sont saisis en colD et colE, ceux de l’ouvrage voisin (nom en colF=G1) sont en colH et colI. Ils sont archivés en feuille BD respectivement en col I, J, K, M et N.
J’ai déjà saisi et archivé des relevés pour l’ouvrage ‘’G1’’ (01/08/1993), les noms des points communs à 2 ouvrages comportent tous les lettres P et C. Donc pour ces points il y aura Double ou quadruple valeurs (une valeur ou 2 pour chaque ouvrage).(voir feuille BD, lignes en jaune)
En passant à un autre ouvrage par exemple ‘’T1’’, je retrouve en colonne F ‘’G1’’ en correspondance avec le type ‘’PC’’ (colonne C).
Je sais qu’il faut passer par des filtres. Mais je bloque pour effectuer des filtres successifs et surtout pour les arguments des cellules qui contiennent les lettres P et C. et pour récupérer l’adresse exacte où l’on va mettre les données récupérées.
Je ne sais pas trop si j’ai bien exposé mon problème en vous remerciant beaucoup pour votre aide.
Cordialement,
Pièces jointes
Dernière édition: