Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 10h49   #1
Membre à l'essai
 
Inscription : avril 2011
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 67
Points : 21
Points : 21
Par défaut recherche sur 2 critères à répétition

Bonjour,

Je vais éssayer d'être le plus clair possible. J'ai un fichier excel conprenant 3 feuille.

La première feuille contient des informations diverses sur les colonnes de A à K et jusqu'à 200 lignes. Seul les colonnes A,C et F m'intérrésse. La colonne A correspond à un numéro. Les colonnes C et F sont des codes 3 lettres représentant des sites.

La deuxieme feuille contient sur les colonnes A et B les combinaisons de site possiblent. La colonne C contient le nom des personnes s'occupant de chacune des combinaisons.

La troisieme feuille reprend des informations sur ces personnes.

Ce que je souhaiterais c'est :

Répartir les numéros en fonction des combinaisons aux personnes concernés.

Concraitement, en fonction des valeurs des colonnes C et F de la première feuille vérifier à l'aide de la 2eme feuille à qui appartient chaque numéro.

Par après je créerais une feuille par personnes pour y insérer le numéro.

Je pense qu'il faut un "For each" mais je suis nul en For ... Next.

J'éspère avoir été clair....
gigalia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 13h58   #2
Membre expérimenté
 
Homme René LE CORNEC
Assistant aux utilisateurs
Inscription : septembre 2007
Messages : 1 114
Détails du profil
Informations personnelles :
Nom : Homme René LE CORNEC
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2007
Messages : 1 114
Points : 513
Points : 513
Bonjour,

Je viens de lire ton post mais j'avoue ne pas trop comprendre ce que tu veux faire.
Peux-tu joindre un fichier exemple avec des explications
Merci par avance
__________________
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
NEC14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h32   #3
Membre à l'essai
 
Inscription : avril 2011
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 67
Points : 21
Points : 21
Bonjour,

oui je peux mettre un fichier pour exprimer mon besoin (toutes les données du fichier sont volontairement bidon).

La 4 eme feuille est le résultat souhaité.

Sincères salutations.
Fichiers attachés
Type de fichier : xls macrodevellopez.xls (49,5 Ko, 8 affichages)
gigalia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h46   #4
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Bonjour,

Ce n'est pas pour être mauvais esprit mais Access permettrait de faire ce que tu veux plus simplement (sans macro VBA).
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h52   #5
Membre à l'essai
 
Inscription : avril 2011
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 67
Points : 21
Points : 21
Bonjour,

Je sais bien mais j'ai volontairement enlevé la macro du fichier qui me permet d'extraire les informations présentes sur la première feuille d'un programme.

De plus vue l'utilisation que je souhaite en faire cela doit rester sur excel.

Et oui la vie n'est pas simple tous les jours ....
gigalia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 18h04   #6
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Pour le faire avec Excel, il va falloir utiliser des boucles, schématiquement:


Pour chaque prénom dans la feuille personne
Pour chaque ligne dans la feuille liaison
Tester si la cellule de la colonne 3 contient le prénom
Si oui, récupérer les valeurs des 2 premières colonnes
Fin chaque ligne dans feuille liaison

Pour chaque ligne dans la feuille numéro
Tester si la combinaison est l'une de celles récupérées dans la boucle précédente
Si oui, copier les données nécessaires dans la feuille cequejeveux
Fin chaque ligne dans feuille numéro
Fin chaque prénom dans feuille personne


C'est pas bien sorcier mais c'est fastidieux...bon courage!
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 08h55   #7
Membre à l'essai
 
Inscription : avril 2011
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 67
Points : 21
Points : 21
Bonjour,

Merci pour le bon courage ... Mais serait-il possible d'avoir le code correspondant au texte?

J'essaie par moi-même mais e résultat n'y est pas.

J'ai presque le code ... merci à vous.

Juste une question:

En vba comment dire n'existe pas?

Bonjour,

J'ai un début de code mais j'ai 2 soucis sur ce code.

1) comment empécher la macro de tourner si la valeur de ge est ""?
2) comment empécher la macro de trouner si la combinaison n'est pas trouver dans la feuille "liaison?

voici le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Sub fortest()
 
Dim ge As Range
Dim ut As Range
Dim ind As Integer
Dim sh
 
For Each ge In Sheets("liaison").Range("C:C")
    For Each ut In Sheets(1).Range("A:A")
 
 
If ge.Offset(0, -2) = ut.Offset(0, 2) And ge.Offset(0, -1) = ut.Offset(0, 5) Then
'recherche de la feuille "ge"
ind = 1
sh = ge.Value
Do While ind <= ThisWorkbook.Sheets.Count
 If ThisWorkbook.Sheets(ind).Name = sh Then
            Exit Do
        End If
    ind = ind + 1
Loop
'si la feuille n'existe pas
If ind > ThisWorkbook.Sheets.Count Then
Sheets("feuil1").Select
Sheets.Add
ActiveSheet.Name = sh
ut.EntireRow.Copy ActiveSheet.Cells(Rows.Count, 1).End(xlUp)(2)
'si la feuille existe
Else
Sheets(sh).Select
ut.EntireRow.Copy ActiveSheet.Cells(Rows.Count, 1).End(xlUp)(2)
End If
 
End If
 
Next ut
Next ge
 
End Sub
gigalia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h46   #8
Membre à l'essai
 
Inscription : avril 2011
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 67
Points : 21
Points : 21
voila le code juste....

Dur travaille mental et gros mal de crâne.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub fortest()
 
Dim ge As Range
Dim ut As Range
Dim ind As Integer
Dim sh
 
For Each ut In Sheets(1).Range("A:A")
If ut <> "" Then
    For Each ge In Sheets("liaison").Range("C2:C100")
        If ge <> "" Then
 
If ge.Offset(0, -2) = ut.Offset(0, 2) And ge.Offset(0, -1) = ut.Offset(0, 5) Then
ind = 1
sh = ge.Value
Do While ind <= ThisWorkbook.Sheets.Count
 If ThisWorkbook.Sheets(ind).Name = sh Then
            Exit Do
        End If
    ind = ind + 1
Loop
'si la feuille n'existe pas
If ind > ThisWorkbook.Sheets.Count Then
Sheets("feuil1").Select
Sheets.Add
ActiveSheet.Name = sh
ut.EntireRow.Copy ActiveSheet.Cells(Rows.Count, 1).End(xlUp)(2)
Else
Sheets(sh).Select
ut.EntireRow.Copy ActiveSheet.Cells(Rows.Count, 1).End(xlUp)(2)
End If
End If
End If
Next ge
End If
Next ut
 
End Sub
gigalia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 12h37   #9
Membre actif
 
Inscription : novembre 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 188
Points : 194
Points : 194
Plus de problème donc...?
Sclarckone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 12h49   #10
Membre à l'essai
 
Inscription : avril 2011
Messages : 67
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 67
Points : 21
Points : 21
plus de problème jusqu'au prochain ....

Allez je le mets en résolu.
gigalia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h36.


 
 
 
 
Partenaires

Hébergement Web