Bonjour à tous,
voici ce que je voudrais faire (et j'ai peur de m’être embarqué dans une usine à gaz)
Feuille 1 j'ai une liste de tests
Feuille 2 j'ai une fiche qui reprends et met en page les tests que j'ai validé sur la feuille 1
Feuille 3 J'ai un tableau qui se créé (reprenant en gros la transposée de la feuille 2)
Objectif:
feuille 1 des cases à cocher pour sélectionner les tests qui sont concernés par la référence
feuille 2 la fiche est mise en page et j'y rentre mes exigences
Feuille 3 le tableau me sert à rentrer mes résultat pour chaque produit (qui par la suite servira à alimenter d'autre tableaux rempli à base de rechercheV) .
je vous joint un fichier excel qui résume en gros ma pensée
avec un petit test de "boucle" SI .
mais là je bloque et je penses qu'un peu de VBA s'impose :/
il va falloir etre un peu plus précis...
Feuille 1 2 et 3: qui est quoi? tes feuilles sont nommées "FL Générique, Fiche labo et Test Labo"
une liste de test.. ou ca? quelle colonne? quelle feuille?
des cases à cocher.. ou ca? quelle colonne? quelle feuille?
Quelle feuille doit alimenter quelle autre feuille?
j'ai donc fait une mise à jour du document pour que cela soit plus clair.
Feuille 1 colonne B on a la liste des tests (T1,T2,T3...)
Feuille A colonne A on choisi (pour l'heure avec un X ) les tests que nous voulons.
Feuille 2 La liste des tests sélectionnés se met en page (affichage que du T2 et T3 si ils ont été sélectionnés sur la feuille 1, avec toutes les cases liées à ce test)
Feuille 3 reprends les colonnes de la feuille 2 et les transforme en ligne (pour ensuite mettre dans chaque colonne les résultats à chaque test)
Un début de solution en PJ
pas besoin de case à cocher. suffit de cliquer sur la colonne A à coté du nom de test
ensuite.. bouton 1 pour lancer la macro de recopie..
Celui ci est mieux...
mais impose quelques modifs et contraintes
dans la feuille1, le numéro de test (T1 T2 ...T5) doit etre fusionné sur TOUTES les lignes qui le concerne..
==> c'est ce qui permet de savoir quelle zone il faut copier
le fait que le numéro de test soit fusionné sur toute la hauteur concerné n'est pas un problème du tout, je dirais même au contraire.
merci.
du coup d'autres questions me viennent
-Si d'aventure je veux conserver une ligne de séparation entre les modules de test est-ce possible? (avoir T1/ligne vide/T2
-avec cette commande est-il possible de générer la transposé de la feuille 2 en feuille 3
Merci beaucoup en tout cas de on aide @vgendron je vais de ce pas essayer d'appliquer (et surtout comprendre ce que tu as fais )
@vgendron je vais avoir besoin d'un petit coup de plus supplémentaire :/
cela se complique un peu,
du coup je ré ouvre ce sujet...
j'ai ce bout de code
Code:
With Feuil6
fin = .UsedRange.Rows.Count 'on récupère la dernière ligne de la feuille
For i = 1 To fin
If .Range("AA" & i) <> "" Then
FinTab = .Range("AA" & i).Offset(1, 0).Row - 1 'on récupère la dernière ligne de la "section test"
Numtest = .Range("AA" & i)
MsgBox Numtest
.Range("AG" & i & ":AG" & FinTab).Copy
Sheets("feuil2").Select
With Feuil2
Set ici = .Columns(1).Find(Numtest, lookat:=xlWhole)
MsgBox ici ' il trouve bien le bon numéro de test
If Not ici Is Nothing Then
.Range("A18").Offset(ici.Rows, 7).PasteSpecial
End If
End With
End If
Next i
End With
j'arrive à récuperer l'info en colonne AA sans problème,
je n'arrives pas à la coller dans la bonne case en revanche.
la macro fait la chose suivante:
regarder chaque ligne de la feuil 6
récupérer les infos en colonne AG si la colonne AA n'est pas vide
chercher sur la feuille 2 le numéro de test correspondant à celui qu'elle a trouvé sur la feuil 2 (jusque là tout va bien)
mais je n'arrive pas à lui faire coller là où il faut, c'est à dire sur la mm ligne où elle a trouvé le numtest mais dans la colonne G...
feuil 6
numéro du test en colonne AA
info à conserver en colonne AG
Feuil 6
numéro du test en colonne A
info à coller en colonne G (à partir de la ligne 18)
Je ne sais pas si c'est clair...
merci d'avance pour le coup de main (et surtout comprendre ce qui bloque)
sans ton nouveau fichier avec la 'feuil6'.. pas facile de voir..
mais déjà..
cette ligne de code...
FinTab = .Range("AA" & i).Offset(1, 0).Row - 1 'on récupère la dernière ligne de la "section test"
si je te dis qu'elle pourrait etre remplacée par
FinTab=i
Bon ok j'envoi le nouveau tableau, ça sera plus simple je penses pour tout expliquer.
merci en tout cas de l'aide,
j'ai sent que la solution existe, mais cela fait 2 jours que j'essaye d'adapter (j'ai réussi à récupérer les donnée, mais pas à les replacer où il faut)
Sub sauve1_2()
'Application.ScreenUpdating = False
With Feuil6
fin = .UsedRange.Rows.Count 'on récupère la dernière ligne de la feuille
For i = 1 To fin
If .Range("AA" & i) <> "" Then
FinTab = .Range("AA" & i).Offset(1, 0).Row - 1 'on récupère la dernière ligne de la "section test"
numtest = .Range("AA" & i)
.Range("AG" & i & ":AG" & FinTab).Copy
With Feuil2
Set ici = .Columns(1).Find(numtest, lookat:=xlWhole)
MsgBox ici.Address
If Not ici Is Nothing Then
.Range(ici.Address).Offset(0, 6).PasteSpecial
End If
End With
End If
Next i
End With
'Application.ScreenUpdating = True
End Sub
je dis un peu. parce que....quand il cherche T1 (que ce soit le premier en ligne 1 ou les suivants (en lignes 16 et 21)
il trouvera TOUJOURS le premier T1 dans la feuille 2 (en ligne 19) ===> donc.. il écrasera systématiquement le premier T1..
il faut trouver quelque chose pour lui dire d'aller au T1 suivant (s'il est déjà rempli par exemple)
En définitive, il n'y à pas de second T1, il y a au pire un T1,1
j'ai oublié de modifier cela.
et j'aimerais aussi que dans la feuil3 on puisse faire la mm chose case par case,
qu'on puisse ajouter des tests au milieu du tableau et que les résultats reviennent "à leur place" automatiquement
(je pensais le faire avec la macro du dessus mais à la fois sur les ligne i et les colonne j)
est-ce "aussi simple"?
C'est surement possible, à condition que tu expliques clairement le besoin...
et je viens de jeter un oeil à tes macros....hmm.. c'est un peu le boxon la dedans.. faudrait faire un peu de rangement...et simplifier tout ca..
c'est pas le sujet pour l'instant.. mais. faudra y penser.. :-D