Traitement de donnees copier/coller sous conditions
Bonjour à tous ,
je suis nouvelle su VBA.
Je souhaiterais faire un traitement de données sur un tableur excel car je devrais gérer plus de 40000 lignes.
J'ai une liste de plusieurs données portant le meme nom, mais le nombre de lignes de ces données varient.
Je n'ai donc pas un nombre de lignes fixes. J'ai décidé de fixer le nombre de lignes à 20 pour chaque groupe de données.
Ce que je souhaiterais faire c'est de copîer coller toutes les lignes constituant chaque groupe de données provenant de l'onglet "Sounding" dans un tableau dans l'onglet "Pile_capacity" et les intercaller de manière à ce que chaque groupe soit constitué de 20 lignes (atteintes ou pas).
Et ensuite passer au groupe suivant, ce qui me facilitera le traitement sur Excel afin de recupérer le maximum des valeurs de chaque colonnes pour un groupe de données.
J'ai mis l'exemple dans ' pile capacity ' concernant la disposition que je souhaiterais avoir. J'ai bidouillé des macros dans l'onglet exmple mais ca ne marche pas.
Je trime actuellement car j'arrive pas à trouver une fonction pouvant m'aider sur VBA.
Le ficier attaché ne présnete que 5 groupes de données car une fois le bon code je pourrais faire la suite pour les 40000 données.
Voilà, si quelqu'un pouvait me donner un petit coup de pouce sur ce coup là, ça serait top !
Merci d'avance
Merci et Cordialement,:)
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Hello,
je te remercie pour ta reponse! Wow,je pense que ça maidera beaucoup
Pourrais je encore demander tes services pour un autre sujet?
En fait, je souhaiterais avoir une macro qui va parcourir les 20 lignes de chaque groupe, et je voudrais qu'elle vérifie pour chaque élément de la colonne H si la valeur est comprise entre les éléments des colonnes F et G tel que:
pour chaque H(i), if H(i)>F(i) et H(i)< G(i) alors I(i)= E(i)
J'ai fait cette macro mais ça ne marche pas pour tous les éléments.
Merci encore pour ton aide pour le précédent fichier, c'est juste génial
Sub treatment()
Dim num1&
Dim DernLigne
DernLigne = Range("B" & Rows.Count).End(xlUp).Row
num1 = Range("A" & Rows.Count).End(xlUp).Row
'For Each cell In Range("AJ31:AJ" & DernLigne)
'For i = 31 To num1 * 20 + 30 Step 20
For i = 31 To num1 * 30 Step 1
'For i = 31 To num1 * 20 + 30
If Range("H" & i) >= Range("F" & i) And Range("H" & i) <= Range("G" & i) Then
Range("I" & i).Value = Range("E" & i)
ElseIf Range("H" & i) >= Range("F" & i + 1) And Range("H" & i) <= Range("G" & i + 1) Then
Range("I" & i).Value = Range("E" & i + 1)
ElseIf Range("H" & i) >= Range("F" & i + 2) And Range("H" & i) <= Range("G" & i + 2) Then
Range("I" & i).Value = Range("E" & i + 2)
ElseIf Range("H" & i) >= Range("F" & i + 3) And Range("H" & i) <= Range("G" & i + 3) Then
Range("I" & i).Value = Range("E" & i + 3)
ElseIf Range("H" & i) >= Range("F" & i + 4) And Range("H" & i) <= Range("G" & i + 4) Then
Range("I" & i).Value = Range("E" & i + 4)
ElseIf Range("H" & i) >= Range("F" & i + 5) And Range("H" & i) <= Range("G" & i + 5) Then
Range("I" & i).Value = Range("E" & i + 5)
ElseIf Range("H" & i) >= Range("F" & i + 6) And Range("H" & i) <= Range("G" & i + 6) Then
Range("I" & i).Value = Range("E" & i + 6)
ElseIf Range("H" & i) >= Range("F" & i + 7) And Range("H" & i) <= Range("G" & i + 7) Then
Range("I" & i).Value = Range("E" & i + 7)
ElseIf Range("H" & i) >= Range("F" & i + 8) And Range("H" & i) <= Range("G" & i + 8) Then
Range("I" & i).Value = Range("E" & i + 8)
ElseIf Range("H" & i) >= Range("F" & i + 9) And Range("H" & i) <= Range("G" & i + 9) Then
Range("I" & i).Value = Range("E" & i + 9)
ElseIf Range("H" & i) >= Range("F" & i + 10) And Range("H" & i) <= Range("G" & i + 10) Then
Range("I" & i).Value = Range("E" & i + 10)
ElseIf Range("H" & i) >= Range("F" & i + 11) And Range("H" & i) <= Range("G" & i + 11) Then
Range("I" & i).Value = Range("E" & i + 11)
ElseIf Range("H" & i) >= Range("F" & i + 12) And Range("H" & i) <= Range("G" & i + 12) Then
Range("I" & i).Value = Range("E" & i + 12)
ElseIf Range("H" & i) >= Range("F" & i + 13) And Range("H" & i) <= Range("G" & i + 13) Then
Range("I" & i).Value = Range("E" & i + 13)
ElseIf Range("H" & i) >= Range("F" & i + 14) And Range("H" & i) <= Range("G" & i + 14) Then
Range("I" & i).Value = Range("E" & i + 14)
ElseIf Range("H" & i) >= Range("F" & i + 15) And Range("H" & i) <= Range("G" & i + 15) Then
Range("I" & i).Value = Range("E" & i + 15)
ElseIf Range("H" & i) >= Range("F" & i + 16) And Range("H" & i) <= Range("G" & i + 16) Then
Range("I" & i).Value = Range("E" & i + 16)
ElseIf Range("H" & i) >= Range("F" & i + 17) And Range("H" & i) <= Range("G" & i + 17) Then
Range("I" & i).Value = Range("E" & i + 17)
ElseIf Range("H" & i) >= Range("F" & i + 18) And Range("H" & i) <= Range("G" & i + 18) Then
Range("I" & i).Value = Range("E" & i + 18)
ElseIf Range("H" & i) >= Range("F" & i + 19) And Range("H" & i) <= Range("G" & i + 19) Then
Range("I" & i).Value = Range("E" & i + 19)
ElseIf Range("H" & i) >= Range("F" & i + 20) And Range("H" & i) <= Range("G" & i + 20) Then
Range("I" & i).Value = Range("E" & i + 20)
Else
Range("I" & i).Value = ""
End If
Next i
End Sub
gmb a écrit :Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Bye !
Hello,
je te remercie pour ta reponse! Wow,je pense que ça maidera beaucoup
Pourrais je encore demander tes services pour un autre sujet?
En fait, je souhaiterais avoir une macro qui va parcourir les 20 lignes de chaque groupe, et je voudrais qu'elle vérifie pour chaque élément de la colonne H si la valeur est comprise entre les éléments des colonnes F et G tel que:
pour chaque H(i), if H(i)>F(i) et H(i)< G(i) alors I(i)= E(i)
J'ai fait cette macro mais ça ne marche pas pour tous les éléments.
Merci encore pour ton aide pour le précédent fichier, c'est juste génial
Sub treatment()
Dim num1&
Dim DernLigne
DernLigne = Range("B" & Rows.Count).End(xlUp).Row
num1 = Range("A" & Rows.Count).End(xlUp).Row
'For Each cell In Range("AJ31:AJ" & DernLigne)
'For i = 31 To num1 * 20 + 30 Step 20
For i = 31 To num1 * 30 Step 1
'For i = 31 To num1 * 20 + 30
If Range("H" & i) >= Range("F" & i) And Range("H" & i) <= Range("G" & i) Then
Range("I" & i).Value = Range("E" & i)
ElseIf Range("H" & i) >= Range("F" & i + 1) And Range("H" & i) <= Range("G" & i + 1) Then
Range("I" & i).Value = Range("E" & i + 1)
ElseIf Range("H" & i) >= Range("F" & i + 2) And Range("H" & i) <= Range("G" & i + 2) Then
Range("I" & i).Value = Range("E" & i + 2)
ElseIf Range("H" & i) >= Range("F" & i + 3) And Range("H" & i) <= Range("G" & i + 3) Then
Range("I" & i).Value = Range("E" & i + 3)
ElseIf Range("H" & i) >= Range("F" & i + 4) And Range("H" & i) <= Range("G" & i + 4) Then
Range("I" & i).Value = Range("E" & i + 4)
ElseIf Range("H" & i) >= Range("F" & i + 5) And Range("H" & i) <= Range("G" & i + 5) Then
Range("I" & i).Value = Range("E" & i + 5)
ElseIf Range("H" & i) >= Range("F" & i + 6) And Range("H" & i) <= Range("G" & i + 6) Then
Range("I" & i).Value = Range("E" & i + 6)
ElseIf Range("H" & i) >= Range("F" & i + 7) And Range("H" & i) <= Range("G" & i + 7) Then
Range("I" & i).Value = Range("E" & i + 7)
ElseIf Range("H" & i) >= Range("F" & i + 8) And Range("H" & i) <= Range("G" & i + 8) Then
Range("I" & i).Value = Range("E" & i + 8)
ElseIf Range("H" & i) >= Range("F" & i + 9) And Range("H" & i) <= Range("G" & i + 9) Then
Range("I" & i).Value = Range("E" & i + 9)
ElseIf Range("H" & i) >= Range("F" & i + 10) And Range("H" & i) <= Range("G" & i + 10) Then
Range("I" & i).Value = Range("E" & i + 10)
ElseIf Range("H" & i) >= Range("F" & i + 11) And Range("H" & i) <= Range("G" & i + 11) Then
Range("I" & i).Value = Range("E" & i + 11)
ElseIf Range("H" & i) >= Range("F" & i + 12) And Range("H" & i) <= Range("G" & i + 12) Then
Range("I" & i).Value = Range("E" & i + 12)
ElseIf Range("H" & i) >= Range("F" & i + 13) And Range("H" & i) <= Range("G" & i + 13) Then
Range("I" & i).Value = Range("E" & i + 13)
ElseIf Range("H" & i) >= Range("F" & i + 14) And Range("H" & i) <= Range("G" & i + 14) Then
Range("I" & i).Value = Range("E" & i + 14)
ElseIf Range("H" & i) >= Range("F" & i + 15) And Range("H" & i) <= Range("G" & i + 15) Then
Range("I" & i).Value = Range("E" & i + 15)
ElseIf Range("H" & i) >= Range("F" & i + 16) And Range("H" & i) <= Range("G" & i + 16) Then
Range("I" & i).Value = Range("E" & i + 16)
ElseIf Range("H" & i) >= Range("F" & i + 17) And Range("H" & i) <= Range("G" & i + 17) Then
Range("I" & i).Value = Range("E" & i + 17)
ElseIf Range("H" & i) >= Range("F" & i + 18) And Range("H" & i) <= Range("G" & i + 18) Then
Range("I" & i).Value = Range("E" & i + 18)
ElseIf Range("H" & i) >= Range("F" & i + 19) And Range("H" & i) <= Range("G" & i + 19) Then
Range("I" & i).Value = Range("E" & i + 19)
ElseIf Range("H" & i) >= Range("F" & i + 20) And Range("H" & i) <= Range("G" & i + 20) Then
Range("I" & i).Value = Range("E" & i + 20)
Else
Range("I" & i).Value = ""
End If
Next i
End Sub