Créer un tableau par VBA selon certaines conditions
Résolu/Fermé
Dreampower75
Messages postés
88
Date d'inscription
jeudi 28 janvier 2021
Statut
Membre
Dernière intervention
18 juin 2022
-
Modifié le 22 avril 2022 à 11:03
Dreampower75 Messages postés 88 Date d'inscription jeudi 28 janvier 2021 Statut Membre Dernière intervention 18 juin 2022 - 4 mai 2022 à 10:20
Dreampower75 Messages postés 88 Date d'inscription jeudi 28 janvier 2021 Statut Membre Dernière intervention 18 juin 2022 - 4 mai 2022 à 10:20
A voir également:
- Créer un tableau par VBA selon certaines conditions
- Tableau croisé dynamique - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un groupe whatsapp - Guide
- Créer un compte instagram sur google - Guide
4 réponses
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 710
Modifié le 22 avril 2022 à 11:54
Modifié le 22 avril 2022 à 11:54
Bonjour,
fichier "2200RISK_charg" doivent être intégré dans l'onglet DTR
Ajoutees a celles qui sont deja dans DTR ou a la Place des ces infos?
Les formules Somme doivent-elles etre mise a jour?
fichier "2200RISK_charg" doivent être intégré dans l'onglet DTR
Ajoutees a celles qui sont deja dans DTR ou a la Place des ces infos?
Les formules Somme doivent-elles etre mise a jour?
Dreampower75
Messages postés
88
Date d'inscription
jeudi 28 janvier 2021
Statut
Membre
Dernière intervention
18 juin 2022
2
4 mai 2022 à 10:20
4 mai 2022 à 10:20
Bonjour,
Merci Forum : j'ai obtenu la solution qui est le codage ci-après
For Each x In Workbooks
If x.Name Like "*RISK.*" Then
Application.Windows(x.Name).Activate: Exit For
End If
Next x
With Sheets("Coûts")
For Each cel In .Range("A11:A" & .Range("A" & Rows.Count).End(xlUp).Row)
'''''''''''''''''''''''''' RISK '''''''''''''
If cel.Offset(, 1) Like "*RISK*" Then
dt = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Range("A" & dt) = cel.Offset(, 1)
ws.Range("B" & dt) = cel.Offset(, 2)
ws.Range("D" & dt) = cel.Offset(, 6) / 1000
ws.Range("F" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("I" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("G" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("J" & dt).Formula = ws.Range("D" & dt).Formula
End If
Next cel
End With
With ws
.Range("A" & dt + 1) = "Total RISK"
.Range("D" & dt + 1).Formula = "=sum(D8:D" & dt & ")"
.Range("F" & dt + 1).Formula = "=sum(F8:F" & dt & ")"
.Range("G" & dt + 1).Formula = "=sum(G8:G" & dt & ")"
.Range("J" & dt + 1).Formula = "=sum(J8:J" & dt & ")"
.Range("K" & dt + 1).Formula = "=sum(J8:J" & dt & ") - sum(G8:G" & dt & ")"
.Range("I" & dt + 1).Formula = ThisWorkbook.Sheets("Détail des risques").Range("I1").Formula
End With
''''''''' RAJOUT "A JUSTIFIER CDP"
''''''''' RAJOUT "A JUSTIFIER CDP"
With ws
dt = dt + 2
.Range("K" & dt).Formula = ThisWorkbook.Sheets("Détail des risques").Range("K1").Formula
End With
''''''''' RAJOUT "A JUSTIFIER CDP"
''''''''' RAJOUT "A JUSTIFIER CDP"
dt = dt + 4 '+4 à ajuster selon le nombre de lignes à insérer
Deb = dt 'sauvegarde de la première ligne pour les OPPORT
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''PARTIE OPPOR OPPOR OPPOR
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Each x In Workbooks
If x.Name Like "*RISK.*" Then
Application.Windows(x.Name).Activate: Exit For
End If
Next x
With Sheets("Coûts")
For Each cel In .Range("A11:A" & .Range("A" & Rows.Count).End(xlUp).Row)
'''''''''''''''''''''''''' OPPOR '''''''''''''
If cel.Offset(, 1) Like "*OPPOR*" Then
ws.Range("A" & dt) = cel.Offset(, 1)
ws.Range("B" & dt) = cel.Offset(, 2)
ws.Range("D" & dt) = cel.Offset(, 6) / 1000
ws.Range("F" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("I" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("G" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("J" & dt).Formula = ws.Range("D" & dt).Formula
dt = dt + 1
End If
Next cel
End With
With ws
.Range("A" & dt) = "Total OPPOR"
'''''''''''''''''''''' Il faut diviser par 2
.Range("D" & dt).Formula = "=sum(D" & Deb & ":D" & dt & ") /2"
.Range("F" & dt).Formula = "=sum(F" & Deb & ":F" & dt & ") /2"
.Range("G" & dt).Formula = "=sum(G" & Deb & ":G" & dt & ") /2"
.Range("J" & dt).Formula = "=sum(J" & Deb & ":J" & dt & ") /2"
.Range("K" & dt).Formula = "=sum(G" & Deb & ":G" & dt & ") /2 - sum(J" & Deb & ":J" & dt & ") /2"
.Range("I" & dt).Formula = ThisWorkbook.Sheets("Détail des risques").Range("I2").Formula
End With
Merci Forum : j'ai obtenu la solution qui est le codage ci-après
For Each x In Workbooks
If x.Name Like "*RISK.*" Then
Application.Windows(x.Name).Activate: Exit For
End If
Next x
With Sheets("Coûts")
For Each cel In .Range("A11:A" & .Range("A" & Rows.Count).End(xlUp).Row)
'''''''''''''''''''''''''' RISK '''''''''''''
If cel.Offset(, 1) Like "*RISK*" Then
dt = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Range("A" & dt) = cel.Offset(, 1)
ws.Range("B" & dt) = cel.Offset(, 2)
ws.Range("D" & dt) = cel.Offset(, 6) / 1000
ws.Range("F" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("I" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("G" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("J" & dt).Formula = ws.Range("D" & dt).Formula
End If
Next cel
End With
With ws
.Range("A" & dt + 1) = "Total RISK"
.Range("D" & dt + 1).Formula = "=sum(D8:D" & dt & ")"
.Range("F" & dt + 1).Formula = "=sum(F8:F" & dt & ")"
.Range("G" & dt + 1).Formula = "=sum(G8:G" & dt & ")"
.Range("J" & dt + 1).Formula = "=sum(J8:J" & dt & ")"
.Range("K" & dt + 1).Formula = "=sum(J8:J" & dt & ") - sum(G8:G" & dt & ")"
.Range("I" & dt + 1).Formula = ThisWorkbook.Sheets("Détail des risques").Range("I1").Formula
End With
''''''''' RAJOUT "A JUSTIFIER CDP"
''''''''' RAJOUT "A JUSTIFIER CDP"
With ws
dt = dt + 2
.Range("K" & dt).Formula = ThisWorkbook.Sheets("Détail des risques").Range("K1").Formula
End With
''''''''' RAJOUT "A JUSTIFIER CDP"
''''''''' RAJOUT "A JUSTIFIER CDP"
dt = dt + 4 '+4 à ajuster selon le nombre de lignes à insérer
Deb = dt 'sauvegarde de la première ligne pour les OPPORT
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''PARTIE OPPOR OPPOR OPPOR
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Each x In Workbooks
If x.Name Like "*RISK.*" Then
Application.Windows(x.Name).Activate: Exit For
End If
Next x
With Sheets("Coûts")
For Each cel In .Range("A11:A" & .Range("A" & Rows.Count).End(xlUp).Row)
'''''''''''''''''''''''''' OPPOR '''''''''''''
If cel.Offset(, 1) Like "*OPPOR*" Then
ws.Range("A" & dt) = cel.Offset(, 1)
ws.Range("B" & dt) = cel.Offset(, 2)
ws.Range("D" & dt) = cel.Offset(, 6) / 1000
ws.Range("F" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("I" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("G" & dt).Formula = ws.Range("D" & dt).Formula
ws.Range("J" & dt).Formula = ws.Range("D" & dt).Formula
dt = dt + 1
End If
Next cel
End With
With ws
.Range("A" & dt) = "Total OPPOR"
'''''''''''''''''''''' Il faut diviser par 2
.Range("D" & dt).Formula = "=sum(D" & Deb & ":D" & dt & ") /2"
.Range("F" & dt).Formula = "=sum(F" & Deb & ":F" & dt & ") /2"
.Range("G" & dt).Formula = "=sum(G" & Deb & ":G" & dt & ") /2"
.Range("J" & dt).Formula = "=sum(J" & Deb & ":J" & dt & ") /2"
.Range("K" & dt).Formula = "=sum(G" & Deb & ":G" & dt & ") /2 - sum(J" & Deb & ":J" & dt & ") /2"
.Range("I" & dt).Formula = ThisWorkbook.Sheets("Détail des risques").Range("I2").Formula
End With
Dreampower75
Messages postés
88
Date d'inscription
jeudi 28 janvier 2021
Statut
Membre
Dernière intervention
18 juin 2022
2
Modifié le 22 avril 2022 à 12:19
Modifié le 22 avril 2022 à 12:19
Bonjour,
Ajouter à la place des infos du tableau de l'onglet DTR
Les formules Somme doivent être mise à jour.
Merci
Ajouter à la place des infos du tableau de l'onglet DTR
Les formules Somme doivent être mise à jour.
Merci
Dreampower75
Messages postés
88
Date d'inscription
jeudi 28 janvier 2021
Statut
Membre
Dernière intervention
18 juin 2022
2
22 avril 2022 à 12:20
22 avril 2022 à 12:20
Bonjour,
Ajouter à la place des infos du tableau de l'onglet DTR
Les formules Somme doivent être mise à jour.
Merci
Ajouter à la place des infos du tableau de l'onglet DTR
Les formules Somme doivent être mise à jour.
Merci
Modifié le 22 avril 2022 à 15:22
Option Explicit
Sub Extraire()
Dim Titre, dt As Integer, ws As Worksheet, cel As Range, n As Integer
Set ws = ThisWorkbook.Worksheets("DTR")
With Sheets("coûts")
For Each cel In .Range("A11:A" & .Range("A" & Rows.Count).End(xlUp).Row)
If cel.Offset(, 1) like "*RISK*" Then
dt = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Range("A" & dt) = cel.Offset(, 1)
ws.Range("B" & dt) = cel.Offset(, 2)
ws.Range("I" & dt) = cel.Offset(, 6)
End If
Next cel
End With
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With Sheets("coûts")
For Each cel In .Range("A11:A" & .Range("A" & Rows.Count).End(xlUp).Row)
If cel.Offset(, 1) like "*OPPOR*" Then
dt = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Range("A" & dt) = cel.Offset(, 1)
ws.Range("B" & dt) = cel.Offset(, 2)
ws.Range("I" & dt) = cel.Offset(, 6)
End If
Next cel
End With