RechercheV boucle VBA

Joannie

XLDnaute Nouveau
Bonjour,
Voici mon problème. Mon problème est sur une même feuille mon (affectation = référence). Je fais une rechercheV d'une ''Donnée'' dans la colonne B (envion 100 données) correspondant à une ''référence'' colonne A.
Par contre, parfois mon affectation correspond à une références qui affiche 2 ou 3 fois dans ma colonne A correspondant ainsi à 2 ou 3''données'' de la colonne B, alors je n'obtiens pas toutes les données correspondantes à mon affectation.
Pour récapituler, la colonne affectation contient toujours 1 seule fois la valeur recherchée, mais cette valeur peut correspondre à plusieurs données car la même référence peut s'afficher plusieurs fois dans la colonne dans certains cas.
Mon problème est que la rechercheV va chercher seulement la première valeur qu'elle repère dans la colonne B pour l'expédier dans la colonne désirée soit I.
Comment puis-je obtenir toutes les données correspondant à mon affectation et les reporter dans la colonne I ?

Voir mon exemple en pièce jointe






J'ai obtenu le code ci-dessous sur le net, je ne sais pas si je dois utiliser cela?

Je sais qu'il faut que je créer une boucle avec du code VBA mais je n'ai aucuine idée à quoi peut ressembler ce code.

Merci beaucoup de m'aider, c'est très gentil


Sub options()
Dim Model As String
Dim cells As Range
Dim i
Model = ActiveCell.Value
i = 2
For Each cells In Worksheets('options').Range('A1:A' & Worksheets('options').Range('A65536').End(xlUp).Ro w)
If cells.Value = Model Then
ActiveCell.Offset(0, i) = cells.Offset(0, 1).Value
i = i + 1
End If
Next
End Sub

(à mettre dans un module) devrait fonctionner
tu te places sur la cellules ou tu veux les options et tu lances la macros
 

Pièces jointes

  • nouveau.xls
    33.5 KB · Affichages: 104
  • nouveau.xls
    33.5 KB · Affichages: 110
  • nouveau.xls
    33.5 KB · Affichages: 112

Minick

XLDnaute Impliqué
Re : RechercheV boucle VBA

Salut,

Quel est le but...
Faut-il afficher les affectations les une en dessous des autres et comparer la valeur de chaque affectation a valeur 06
ou comparer le total de la reference a valeur 06
ou afficher toutes les affectations dans une seul cellule et comparait le total a Valeur 06
ou ...?
 

Joannie

XLDnaute Nouveau
Re : RechercheV boucle VBA

Bonjour,

Il faut afficher les affectations les unes en dessous des autres et comparer mon total des affectations reportées par rapport à mon total de ma valeur 06

Par exemple, si j'ai une référence qui correxpond à 3 affectations. Alors je veut afficher les 3 affectations ainsi que leur valeur. Ensuite je fais le total de mes 3 affectations (11) + ma valeur (06).


Est-ce que ça répond à votre question?

Merci beaucoup de m'aider...c'est très gentil.:)
 

Joannie

XLDnaute Nouveau
Re : RechercheV boucle VBA

Bonjour,


1) Un gros Merci à Bebere, c'est vraiment fantastique:)

2) Il me reste 2 questions, pour ma colonne K je veux obtenir mes 2x 00 devant mon affectation. J'ai modifié le code et ça me donne les 2 (00) que j'avais + 2 nouveaux (00) avec ma modif...et si j'enlève la modif il n'y a aucun (00) qui apparaisse devant mon affectation. Donc, avez-vous une alternative???

Sub Options()
Dim Model As String
Dim C As Range, Cel As Range
Dim i
Model = ActiveCell.Value
l = 3
With Worksheets("Gabarit")
For Each Cel In .Range("E3:E" & .Range("E65536").End(xlUp).Row)

Set C = .Columns(1).Find(Cel, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
.cells(l, "J").Value = Cel
.cells(l, "K").Value = " 00 " & C.Offset(, 1).Value
.cells(l, "L").Value = C.Offset(, 2).Value
.cells(l, "M").Value = Cel.Offset(, 3).Value + C.Offset(, 2).Value
l = l + 1
Set C = .Columns(1).FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
Next
End With
End Sub

3) Question par rapport à mes somme (Écart) si j'ai 3 affectations pour le même 06 (comme dans mon fichier pour le #286263) je voudrais faire en sorte que mon écart soit égal à ma somme de mes 3 valeurs d'affectations (-78.23 -55.88 -22.35) + (591,9) ma valeur 06.

Alors je crois qu'il faudrais que je créé un if si nb. affectation >1 faire la somme des valeure de ces affectations.

C'est une piste mais je ne suis vraiment pas certaine:

(lorsque juste 1 affectation)
if cel=1 cells(l, "M").Value = Cel.Offset(, 3).Value + C.Offset(, 2).Value

losques > 1 affectation
then cells(l, "M").Value = ???

et je ne suis pas certaine comment inclure ceci dans le reste du code?

Vraiment un gros merci à tous!!!
 

Pièces jointes

  • nouveau_modif_JO.xls
    43.5 KB · Affichages: 92

Bebere

XLDnaute Barbatruc
Re : RechercheV boucle VBA

bonjour Joannie,Minick
changements effectués
à bientôt
 

Pièces jointes

  • nouveau_modif_JO(1).zip
    16.3 KB · Affichages: 76
  • nouveau_modif_JO(1).zip
    16.3 KB · Affichages: 71
  • nouveau_modif_JO(1).zip
    16.3 KB · Affichages: 71

Joannie

XLDnaute Nouveau
Re : RechercheV boucle VBA

Bonjour Bebere,

Serait-ce possible que vous m'ayez envoyé le même fichier que j'avais envoyé lors de mes modifications hier?

Je ne vois aucune modification par rapport à mon problème des 2x 00 avant mon affectation et mon calcul d'écart est toujours le même pour mes 3 affectation (11) correspondant à un (06).

Aviez-vous une piste de solution?

Merci beaucoup
 

Bebere

XLDnaute Barbatruc
Re : RechercheV boucle VBA

bonjour Joannie
eh oui oublié de zipper le fichier changé
à bientôt
 

Pièces jointes

  • nouveau_modif_JO(1).zip
    16.4 KB · Affichages: 91
  • nouveau_modif_JO(1).zip
    16.4 KB · Affichages: 89
  • nouveau_modif_JO(1).zip
    16.4 KB · Affichages: 92

Joannie

XLDnaute Nouveau
Re : RechercheV boucle VBA

Bonjour,

J'ai 2 petites questions:

1-Comment faire en sorte que ma colonne L prenne le bon type(POR,ESR,RET)...j'ai modifié le code et ça ne me donne pas le bon type losque j'actionne la macro.

.Cells(L, "L").Value = C.Offset(, 6).Value
.Cells(L, "K").Value = C.Offset(, 5).Value
.Cells(L, "J").Value = Cel.Value
.Cells(L, "M").Value = " 00 " & C.Offset(, 1).Value
.Cells(L, "N").Value = C.Offset(, 2).Value
.Cells(L, "O").Value = Cel.Offset(, 3).Value + C.Offset(, 2).Value

2- J'ai le même problème avec ma colonne K, il ne prend pas la bonne affectation (col0nne F) .


.Cells(L, "L").Value = C.Offset(, 6).Value
.Cells(L, "K").Value = C.Offset(, 5).Value
.Cells(L, "J").Value = Cel.Value
.Cells(L, "M").Value = " 00 " & C.Offset(, 1).Value
.Cells(L, "N").Value = C.Offset(, 2).Value
.Cells(L, "O").Value = Cel.Offset(, 3).Value + C.Offset(, 2).Value


Ais-je d'autres chose à modifier dans le code autre que ce qui est en rouge??? parce que j'obtiens des valeurs erronées dans ma colonne de résultat (L et K)


Sub Options()
Dim MaRef As String
Dim C As Range, Cel As Range
Dim L As Long, Li As Long, NbRef As Byte
L = 3
With Worksheets("Gabarit")
.Range("J3:O" & .Range("J65536").End(xlUp).Row).ClearContents
For Each Cel In .Range("E3:E" & .Range("E65536").End(xlUp).Row)
NbRef = 0: Li = 0: MaRef = ""
NbRef = Application.CountIf(.Range("A3:A" & .Range("A65536").End(xlUp).Row), "=" & Cel)
If NbRef > 1 Then MaRef = Cel.Value: Li = Cel.Row
Set C = .Columns(1).Find(Cel, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
.Cells(L, "L").Value = C.Offset(, 6).Value
.Cells(L, "K").Value = C.Offset(, 5).Value
.Cells(L, "J").Value = Cel.Value
.Cells(L, "M").Value = " 00 " & C.Offset(, 1).Value
.Cells(L, "N").Value = C.Offset(, 2).Value
.Cells(L, "O").Value = Cel.Offset(, 3).Value + C.Offset(, 2).Value
If MaRef <> "" Then
If .Cells(Li, "P").Value = "" Then
.Cells(Li, "P").Value = Cel.Offset(, 3).Value + C.Offset(, 2).Value
Else: .Cells(Li, "P").Value = .Cells(Li, "P").Value + C.Offset(, 2).Value
End If
End If
L = L + 1
Set C = .Columns(1).FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
Next
End With
End Sub



Merci beaucoup de me revenir, ça serait très gentil! Je n'ai pas pas joint le nouveau fichier parce que le code est trop gros et je n'ai pas le logiciel pour zipper des fichiers (SVP copier et coller la nouvelle macro dans le module 1, si nécessaire)

bye bye
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : RechercheV boucle VBA

bonjour Joannie
c prend les données colonne A,c.offset(0,1) pour colonne b,etc
pour avoir Bonne affectation 06 et type il faut cel colonne E
cel.offset(0,1) pour colonne F(Bonne affectation 06),cel.offset(0,2) pour colonne G (type)
si çà ne va pas met un fichier avec les entêtes et quelques données
tu peux trouver un zip,un peu partout(pc astuces,clubic.com)
ou télécharge FreeCommander et tu as tout avec
à bientôt
 

jeanpierre

Nous a quitté
Repose en paix
Re : RechercheV boucle VBA

Bonjour Bebere, joannie,

Pour le Zip, pas besoin de se casser la tête, il est inclus à Windows.

Clic droit sur ton fichier, dans l'explorateur, et Envoyer vers/Dossier compressé.

Il faut, toutefois, qu'il fasse moins de 48.8Ko.

Sinon, reste la solution extrême, le déposer sur cijoint.fr et donner le lien.

Bon lundi de Pâques.

Jean-Pierre
 

Discussions similaires

Réponses
4
Affichages
166
Réponses
5
Affichages
193

Statistiques des forums

Discussions
312 270
Messages
2 086 681
Membres
103 370
dernier inscrit
pasval