Chercher Valeurs suivant conditions

famu

XLDnaute Occasionnel
Re-Bonjour,

Voici un autre problème pour lequel je n'ai pas de solution "simple":

Avoir les informations, représentées en rouge, sur la feuille "calcul" qui viennent de la feuille "Valeurs" pour toutes les "Lignes+Fam." (entêtes des colonnes A et B).
La solution est peut-être de passer par un compteur...mais impossible de la trouver "comme un grand"!
Merci, une fois de plus, pour votre aide.
Famu.
 

Pièces jointes

  • testChercherValeurs.zip
    44.7 KB · Affichages: 38
  • testChercherValeurs.zip
    44.7 KB · Affichages: 39
  • testChercherValeurs.zip
    44.7 KB · Affichages: 39

jp14

XLDnaute Barbatruc
Re : Chercher Valeurs suivant conditions

Bonjour

Voici une macro qui devrait correspondre au problème posé.

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 13/11/2006 par j
Dim data1 As String
Dim trouve As Byte
Dim dl1 As Long
Dim i As Long
Dim j As Long

Sheets("Feuil2").Range("A" & 1) = "Causali Linea"
Sheets("Feuil2").Range("C" & 1) = " "
For i = 2 To Sheets("Valeurs").Range("G65536").End(xlUp).Row

data1 = Sheets("Valeurs").Range("G" & i)
If data1 <> "" And Sheets("Valeurs").Range("M" & i) > 0 Then
trouve = 0
For j = 2 To Sheets("Feuil2").Range("C65536").End(xlUp).Row
If data1 = Sheets("Feuil2").Range("C" & j) Then
trouve = 1
Exit For
End If

Next j




If trouve = 0 Then ' creation de la ligne
dl1 = Sheets("Feuil2").Range("C65536").End(xlUp).Row + 1
Sheets("Feuil2").Range("C" & dl1) = data1
Sheets("Feuil2").Range("D" & dl1) = Sheets("Valeurs").Range("H" & i)
Sheets("Feuil2").Range("E" & dl1) = Sheets("Valeurs").Range("M" & i)


Else
Sheets("Feuil2").Range("E" & j) = Sheets("Valeurs").Range("M" & i) + Sheets("Feuil2").Range("E" & j)



End If
End If

Next i
'
dl1 = Sheets("Feuil2").Range("C65536").End(xlUp).Row + 1

Sheets("Feuil2").Range("A" & dl1 + 1) = "Causali M.O."
Sheets("Feuil2").Range("C" & dl1 + 2) = " "
For i = 2 To Sheets("Valeurs").Range("G65536").End(xlUp).Row

data1 = Sheets("Valeurs").Range("G" & i)
If data1 <> "" And Sheets("Valeurs").Range("K" & i) > 0 Then
trouve = 0
For j = 2 To Sheets("Feuil2").Range("C65536").End(xlUp).Row
If data1 = Sheets("Feuil2").Range("C" & j) Then
trouve = 1
Exit For
End If

Next j




If trouve = 0 Then ' creation de la ligne
dl1 = Sheets("Feuil2").Range("C65536").End(xlUp).Row + 1
Sheets("Feuil2").Range("C" & dl1) = data1
Sheets("Feuil2").Range("D" & dl1) = Sheets("Valeurs").Range("H" & i)

Sheets("Feuil2").Range("E" & dl1) = Sheets("Valeurs").Range("K" & i)

Else

Sheets("Feuil2").Range("E" & j) = Sheets("Valeurs").Range("K" & i) + Sheets("Feuil2").Range("E" & j)


End If
End If

Next i
End Sub

JP
 

famu

XLDnaute Occasionnel
Re : Chercher Valeurs suivant conditions

jp14 à dit:
Bonjour

Voici une macro qui devrait correspondre au problème posé.

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 13/11/2006 par j
Dim data1 As String
Dim trouve As Byte
Dim dl1 As Long
Dim i As Long
Dim j As Long

Sheets("Feuil2").Range("A" & 1) = "Causali Linea"
Sheets("Feuil2").Range("C" & 1) = " "
For i = 2 To Sheets("Valeurs").Range("G65536").End(xlUp).Row

data1 = Sheets("Valeurs").Range("G" & i)
If data1 <> "" And Sheets("Valeurs").Range("M" & i) > 0 Then
trouve = 0
For j = 2 To Sheets("Feuil2").Range("C65536").End(xlUp).Row
If data1 = Sheets("Feuil2").Range("C" & j) Then
trouve = 1
Exit For
End If

Next j




If trouve = 0 Then ' creation de la ligne
dl1 = Sheets("Feuil2").Range("C65536").End(xlUp).Row + 1
Sheets("Feuil2").Range("C" & dl1) = data1
Sheets("Feuil2").Range("D" & dl1) = Sheets("Valeurs").Range("H" & i)
Sheets("Feuil2").Range("E" & dl1) = Sheets("Valeurs").Range("M" & i)


Else
Sheets("Feuil2").Range("E" & j) = Sheets("Valeurs").Range("M" & i) + Sheets("Feuil2").Range("E" & j)



End If
End If

Next i
'
dl1 = Sheets("Feuil2").Range("C65536").End(xlUp).Row + 1

Sheets("Feuil2").Range("A" & dl1 + 1) = "Causali M.O."
Sheets("Feuil2").Range("C" & dl1 + 2) = " "
For i = 2 To Sheets("Valeurs").Range("G65536").End(xlUp).Row

data1 = Sheets("Valeurs").Range("G" & i)
If data1 <> "" And Sheets("Valeurs").Range("K" & i) > 0 Then
trouve = 0
For j = 2 To Sheets("Feuil2").Range("C65536").End(xlUp).Row
If data1 = Sheets("Feuil2").Range("C" & j) Then
trouve = 1
Exit For
End If

Next j




If trouve = 0 Then ' creation de la ligne
dl1 = Sheets("Feuil2").Range("C65536").End(xlUp).Row + 1
Sheets("Feuil2").Range("C" & dl1) = data1
Sheets("Feuil2").Range("D" & dl1) = Sheets("Valeurs").Range("H" & i)

Sheets("Feuil2").Range("E" & dl1) = Sheets("Valeurs").Range("K" & i)

Else

Sheets("Feuil2").Range("E" & j) = Sheets("Valeurs").Range("K" & i) + Sheets("Feuil2").Range("E" & j)


End If
End If

Next i
End Sub

JP

Pour commencer MERCI JP pour ton travail.
J'ai testé...mais, bien que la macro ne beug pas, je n'obtiens sur la feuil2, que les chiffres de la ligne 300500 et encore, +/- juste.
Je n'ai pas toutes les valeurs en rouge pour chaque "ligne/Fam." qui apparaissent.
J'ai bien essayé de déchiffré ta macro mais là, c'est bien trop fort pour moi.
Si tu peux encore m'aider un peu, ça serait super.
Ciao,
FAMU.
 

jp14

XLDnaute Barbatruc
Re : Chercher Valeurs suivant conditions

Bonjour

Ci joint un fichier avec la macro.
J'ai apporté quelques modifications, des commentaires et j'ai rajouté pour contrôle le nombre d' utilisation du code.

A tester

JP
 

Pièces jointes

  • testChercherValeurs.zip
    27.8 KB · Affichages: 38
  • testChercherValeurs.zip
    27.8 KB · Affichages: 38
  • testChercherValeurs.zip
    27.8 KB · Affichages: 33

famu

XLDnaute Occasionnel
Re : Chercher Valeurs suivant conditions

jp14 à dit:
Bonjour

Ci joint un fichier avec la macro.
J'ai apporté quelques modifications, des commentaires et j'ai rajouté pour contrôle le nombre d' utilisation du code.

A tester

JP

OK JP.
Je travaille dessus et te tiens au courrant. Peut-être pas avt demain matin car l'heure tourne
Merci,
Famu.
 

famu

XLDnaute Occasionnel
Re : Chercher Valeurs suivant conditions

famu à dit:
JP,

Pour première info, la macro Beug.
A+,
Famu

JP,

Je vois que tu as supprimé les sous-totaux sur la feuille "Valeurs" : j'en ai besoin pour d'autres formules. S'il te plait, ne pas toucher à la configuration de la feuille "Valeurs".
Une autre chose : tu as fait la somme des "Causali" sur la feuil2.
Cela ne répond pas à la question : Il ne faut pas modifier la feuil2 mais profiter de l'espace créé entre différentes "ligne-Fam." pour mettre les causali Linea et causali M.O. correspondant.
C'est pas simple et je crois que tu vas me maudir si je continue!
Je te souhaite une bonne soirée,
Ciao...et à demain j'espère...car sans toi...j'suis mort!
Famu.
 

jp14

XLDnaute Barbatruc
Re : Chercher Valeurs suivant conditions

Bonsoir

Du point de vue procédure la macro à l'air de fonctionner, il faut vérifier si les données sont récupérées au bon endroit et si les tests sont corrects.

Ci joint le module de macro
Dans l'éditeur de macro il faut utiliser le menu fichier et importer une macro.

Bon courage

JP
 

Pièces jointes

  • Module3.zip
    1.4 KB · Affichages: 31
  • Module3.zip
    1.4 KB · Affichages: 43
  • Module3.zip
    1.4 KB · Affichages: 40

famu

XLDnaute Occasionnel
Re : Chercher Valeurs suivant conditions

jp14 à dit:
Bonsoir

Du point de vue procédure la macro à l'air de fonctionner, il faut vérifier si les données sont récupérées au bon endroit et si les tests sont corrects.

Ci joint le module de macro
Dans l'éditeur de macro il faut utiliser le menu fichier et importer une macro.

Bon courage

JP

Bonjour,
Pour commencer, j'aimerais donner une "mention TRES BIEN" à notre ami JP14 qui m'a fait un excellent travail. je n'ai pas encore pu tout vérifier (car je n'étais pas là hier) mais apparemment c'est TOP.
Sans votre aide, Excel serait, pour la plus part d'entre nous, que des fichiers de bases de données.
Merci encore JP pour ton excellent travail.
Salut,
Famu.
 

famu

XLDnaute Occasionnel
Re : Chercher Valeurs suivant conditions

Bonjour JP,

Dans la dernière Macro que tu as posté, il y a un petit problème :

elle titent compte uniquement de la "Fam. Ind." alors que l'on doit tenir compte de la "Linea" & "Fam. Ind.".

Par exemple, la 300100 A301 n'a pas de Causali mais la 300200 A301 oui.
La macro donne des Causali identiques sur 300100 A301 et sur 300200 A301.

Pas moyen de la modifier tout seul!
Si tu peux encore m'aide un peu...

Salut,
Famu
 

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 297
Membres
104 092
dernier inscrit
karbone57