Faire un résumé de tableau d'un puits de pétrole
Salut à tous !
Je travaille en ce moment sur les documents de suivi d'activité sur les puits pétroliers.
J'apprend donc le VBA pour pouvoir compiler une série de documents à partir de deux tableaux qui détaillent la composition de l'équipement à l'intérieur des puits.
On a :
- un tableau pour les tube de production : "tbg"
- un tableau pour les tige de pompage :" SR"
Je souhaiterais résumér ces deux tableaux et je n'y arrive pas !!
Pouvez vous m'aider ?
Je vous mets un fichier avec deux tableaux détaillés qui sont les sources de données et deux tableaux résumé sont les tableaux que je cherche à obtenir.
Merci pour toute l'aide que vous pourrez m'apporter.
Coridialement
HopHopHop
Je suis disponible si vous avez besoin de plus d'informations !!!
Voilà un bout de code que j'ai fait.
Pouvez-vous m'aider à résoudre ce soucis ?
J'ai déjà essayé :
- RemoveDupplicates
- array_duplicates_delete
Mais ça ne donne rien.
Sub résumé_tbg()
'Attention ! Il s'agit du code le plus compliqué aue j'ai tapé.
'Je ne suis pas informaticien, j'apprend tout seul.
'Déclaration des vairable tableaux pour le grade et les manchons.
Dim _
tab_grade(302), _
tab_fil(302), _
tab_dia(302), _
tab_typ(302) _
As Variant
'déclaration des variable d'incrémentations.
Dim _
max, _ 'compte le nombre maximum de ligne
ligne, _ 'donne les coordonnées ligne de la feuille source
colonne, _ 'donne les coordonnées colonnede la feuille source
lig_col, _ 'donne les coordonnées ligne de la feuille cible
col_col, _ 'donne les coordonnées colonne de la feuille cible
i, _ 'compte le nombre d'élément numéroté
j _ 'donne la coordonnée ligne des tableaux tab_grade(302), tab_fil(302), tab_dia(302), tab_typ(302)
'Déclaration des variables d'analyses du contenu de la tally SR
'et des variable de résumé de tally SR
Dim _
nombre, _ 'nombre d'élément numéroté
grade, _ 'grade d'acier des tubes
dia, _ 'diamètre des tubes
typ, _ 'type d'éléments
fil, _ 'type de filetage
prof _ 'profondeur
As Variant
Set Data = Sheets("Tally_tbg_SMP").Range("A3:A302") 'range des données sources
'Construction de la feuille et du tableau de résumé.
'Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Résumé_tally_tbg"
Range("A1").Select
'situation initiale des compteurs
i = 0
j = 0
ligne = 1
colonne = 1
lig_col = 1
col_col = 1
While Data.Cells(ligne, 1) <> "" 'exécuter tant que la ligne sélectionner n'est pas vide.
i = i + 1
If Data.Cells(ligne, 6) = "x" Then 'les éléments marqués par un X sont remarquables.
'ici, j'aimerais mettre un bout de code pour supprimer les doublons des variables tableaux
'et concatener les éléments identiques des variables tableaux dans une cellule du tableau cible.
nombre = 1
i = 0
j = 0
Erase tab_grade
Erase tab_fil
Erase tab_dia
Erase tab_typ
For colonne = 1 To 10 'récupérer les informations dans le range Data
Sheets("Tally_tbg_SMP").Select
Data.Cells(ligne, colonne).Select
If colonne = 1 Then
dia = Data.Cells(ligne, colonne).Text
ElseIf colonne = 2 Then
typ = Data.Cells(ligne, colonne).Text
ElseIf colonne = 3 Then
grade = Data.Cells(ligne, colonne).Text
ElseIf colonne = 4 Then
fil = Data.Cells(ligne, colonne).Text
ElseIf colonne = 9 Then
prof = Data.Cells(ligne, colonne).Text
End If
Next
Sheets("Résumé_tally_tbg").Select 'coller les informations dans le tableau cible
Range("A1").Select
For col_col = 1 To 6
Cells(lig_col, col_col).Select
If col_col = 1 Then
Cells(lig_col, col_col) = typ
ElseIf col_col = 2 Then
Cells(lig_col, col_col) = dia
ElseIf col_col = 3 Then
Cells(lig_col, col_col) = fil
ElseIf col_col = 4 Then
Cells(lig_col, col_col) = grade
ElseIf col_col = 5 Then
Cells(lig_col, col_col) = nombre
ElseIf col_col = 6 Then
Cells(lig_col, col_col) = Round(prof, 2)
End If
Next
Else 'si les éléments sont numérotés
i = i
nombre = i
For colonne = 1 To 10 'récupérer les données dans le range Data et les mettre dans l'espace (j) du tableau choisit
Sheets("Tally_tbg_SMP").Select
Data.Cells(ligne, colonne).Select
If colonne = 1 Then
tab_dia(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 2 Then
tab_typ(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 3 Then
tab_grade(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 4 Then
tab_fil(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 9 Then
prof = Data.Cells(ligne, colonne).Text
End If
Next
j = j + 1
End If
ligne = ligne + 1
Wend
End Sub
Les commentaires sur le code posent problème avec Visual Basic donc voici le code avec moi de commentaires :
Sub résumé_tbg()
'Attention ! Il s'agit du code le plus compliqué aue j'ai tapé.
'Je ne suis pas informaticien, j'apprend tout seul.
'Déclaration des vairable tableaux pour le grade et les manchons.
Dim _
tab_grade(302), _
tab_fil(302), _
tab_dia(302), _
tab_typ(302) _
As Variant
'déclaration des variable d'incrémentations.
Dim _
max, _
ligne, _
colonne, _
lig_col, _
col_col, _
i, _
j _
As Integer
'Déclaration des variables d'analyses du contenu de la tally SR
'et des variable de résumé de tally SR
Dim _
nombre, _
grade, _
dia, _
typ, _
fil, _
prof _
As Variant
Set Data = Sheets("Tally_tbg_SMP").Range("A3:A302")
'Construction de la feuille et du tableau de résumé.
'Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Résumé_tally_tbg"
Range("A1").Select
i = 0
j = 0
ligne = 1
colonne = 1
lig_col = 1
col_col = 1
While Data.Cells(ligne, 1) <> ""
i = i + 1
If Data.Cells(ligne, 6) = "x" Then
nombre = 1
i = 0
j = 0
Erase tab_grade
Erase tab_fil
Erase tab_dia
Erase tab_typ
For colonne = 1 To 10
Sheets("Tally_tbg_SMP").Select
Data.Cells(ligne, colonne).Select
If colonne = 1 Then
dia = Data.Cells(ligne, colonne).Text
ElseIf colonne = 2 Then
typ = Data.Cells(ligne, colonne).Text
ElseIf colonne = 3 Then
grade = Data.Cells(ligne, colonne).Text
ElseIf colonne = 4 Then
fil = Data.Cells(ligne, colonne).Text
ElseIf colonne = 9 Then
prof = Data.Cells(ligne, colonne).Text
End If
Next
Sheets("Résumé_tally_tbg").Select
Range("A1").Select
For col_col = 1 To 6
Cells(lig_col, col_col).Select
If col_col = 1 Then
Cells(lig_col, col_col) = typ
ElseIf col_col = 2 Then
Cells(lig_col, col_col) = dia
ElseIf col_col = 3 Then
Cells(lig_col, col_col) = fil
ElseIf col_col = 4 Then
Cells(lig_col, col_col) = grade
ElseIf col_col = 5 Then
Cells(lig_col, col_col) = nombre
ElseIf col_col = 6 Then
Cells(lig_col, col_col) = Round(prof, 2)
End If
Next
Else
i = i
nombre = i
For colonne = 1 To 10
Sheets("Tally_tbg_SMP").Select
Data.Cells(ligne, colonne).Select
If colonne = 1 Then
tab_dia(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 2 Then
tab_typ(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 3 Then
tab_grade(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 4 Then
tab_fil(j) = Data.Cells(ligne, colonne).Text
ElseIf colonne = 9 Then
prof = Data.Cells(ligne, colonne).Text
End If
prochaine_boucle:
Next
j = j + 1
End If
ligne = ligne + 1
Wend
End Sub