Créer une inputbox pour rechercher une valeur

Résolu/Fermé
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008 - 29 juil. 2008 à 21:04
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008 - 6 août 2008 à 14:57
Bonjour,
comment puis je utiliser une boite qui permettrait de saisir une valeur a rechercher dans une liste et de sélectionner toutes les cellules qui contiennent cette valeur et d'inscrire dans la cellule a coté l'heure.
je n'arrive pas a combiner la fonction recherche et une inputbox.
Merci de votre aide
A voir également:

18 réponses

balou01 Messages postés 83 Date d'inscription mardi 26 juin 2007 Statut Membre Dernière intervention 3 décembre 2014 2
29 juil. 2008 à 21:35
une des bases de ce forum si tu veux obtenir de l'aide c'est de nous dire dans quel langage tu souhaite faire ca...

Il n'y a aps quelqu'un qui va te donner la solution dans tous les langages possibles et imaginable !
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
29 juil. 2008 à 22:35
salut
je travaille sur un fichier excel et je dois réaliser des macro
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
29 juil. 2008 à 22:47
Bonjour,
C'est facilement faisable mais ce serait peut-être plus simple de sélectionner une des cellules qui contient les cellules à chercher et un bouton pour envoyer.

Qu'en dit-tu ?
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
30 juil. 2008 à 17:59
bonjour
mon souci c'est que je n'arrive pas a ecrire la macro qui me permette de cherche dans la colonne les valeurs qui corresponde au critere

for i=9 TO 100
Maplage=range("F9:F100)
cells.find(what=range"G2",after :activecell).activate
activecell.offset(0,3)=time

NEXT


Probleme cette macro ne fonctionne pas comme voulu elle cherche dans toutes les cellules de la feuille et ecrit un peu partout

j'ai besoin de votre aide merci
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
31 juil. 2008 à 02:18
Tu ne précise pas les coordonées mais j'ai déduit..
Sub BV2()
Dim i As Long
Dim Debut1 As Integer
Dim Critere As Variant
    Debut1 = 9
    Critere = Cells(2, 7) 'pour G2
    For i = Debut1 To Range("F1").SpecialCells(xlCellTypeLastCell).Row
        If Cells(i, 6) = Critere Then 'teste colonne F
            Cells(i, 9) = Time 'écrit colonne I
        End If
    Next i

End Sub

Tu dit
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
31 juil. 2008 à 20:40
bonjour
merci de ton aide ta formule fonctionne parfaitement
j' utilisais cette macro
If Range("IV1") > 0 Then
For Each objCell In Range("U4:AV2000")
If objCell.Value = Range("IV1") Then objCell.Offset(1, 2) = Time
Next objCell

mais elle met du temps a traiter toutes les lignes
merci pour ta solution

maintenant je me heurte a un autre problème je dois ecrire une macro qui recherche une valeur dans une colonne une fois celle ci trouvé recopie les certaines cellules par exemple A1,A10,A23 jusqu'a 7 valeurs et les recopier dans un bon

je ne sais pas si j'ai été clair mais je n'arrive plus a réfléchir avec ce probléme sujet de mon stage merci de ton aide

a+
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 août 2008 à 10:52
c'est quoi ton 'bon', une feuille ? un UserForm ?

Montre la macro que tu a commencé pour ca.
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
1 août 2008 à 20:00
bonjour
voila une partie de ma macro qui me pose probleme
la macro cherche dans base de donnée une valeur entrée range "CV2" dés qu'elle trouve elle se décale copie la valeur trouvé et la copie dans un fiche (bon) sur une autre feuille
probleme si la valeur n'est pas trouvé la macro plante
merci du temps que tu me consacres



'remplie local dans le bon (fiche dans une feuille qui doit être imprimée

With Sheets("bon")
Columns("J:J").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select

ActiveCell.Copy

Range("A8:A15").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 2).Select

ActiveSheet.Paste


Columns("J:J").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 2).Select

ActiveCell.Copy

Range("A8:A15").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Select

Range("B6") = Range("'feuille de saisie'!J6")
Range("B7") = Range("'feuille de saisie'!G6")
Range("B8") = Range("'feuille de saisie'!E6")
Range("E16") = Range("'feuille de saisie'!H6")


ActiveSheet.Paste

je devrait utiliser une boucle pour effectuer la recherche mais je n'obient qu'un macro qui tourne a l'infini
a+
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 août 2008 à 06:30
Pour ta 1ère erreur faut mettre un On error,
    On Error GoTo passe
    ......
    Exit Sub
Passe:
    msgbox "Valeur non trouvée"
End sub

Pour le 2 je supose que c'est ça que tu veux faire ?

Pour effectuer des recherches plus complexes, utilisez une instruction For Each...Next avec l'opérateur Like. Par exemple, l'exemple de code suivant montre comment rechercher toutes les cellules de la plage A1:C5 qui utilisent une police dont le nom commence par les lettres « Cour ». Lorsque Microsoft Excel trouve une cellule correspondante, il lui affecte la police Times New Roman.
For Each c In [A1:C5]
    If c.Font.Name Like "Cour*" Then
        c.Font.Name = "Times New Roman"
    End If
Next

Sinon tu explique mieux le 2.
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
2 août 2008 à 13:40
bonjour

merci pour le temps que tu me consacre

je joint un exemple de mon dossier excel afin que tu voit ce que je doit faire
tes conseils m'ont fait progresser dans mon projet encore milles merci

https://www.cjoint.com/?icnHRTXfv5

j'ai annoté en vert sur la feuille ce a quoi je dois aboutir sans y parvenir pour l'instant je tourne en rond
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 août 2008 à 14:52
Je comprend pas, Met les données complète (remplir toute la ligne)pour une ligne dans la feuilles moteur, y compris la 2èm ligne qui semble être prise en compte ...NB+ et NB- ? à l'avant dernière colonne.
Ensuite, avec les données de la feuilles moteur, tu rempli complètement la feuille bon, tu demande des données de 1 à 7 mais quoi?

-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
2 août 2008 à 16:28
bonjour

je te remet un exemple de mon fichier
ce que je cherche a faire c'est rechercher dans la dernière colonne feuille "moteur"
les cellules qui contiennent un numéro de bon de le recopier dans la feuille bon en F3
de recopier sur la ligne tous les numéro de bon par exemple (V4,Z4,AD4...) et de les recopier sur la feuille bon en (B9,C9,D9,E9,F9,G9,B10)
ensuite copier le bon dans feuille impression
et refaire la meme procédure avec ligne suivante contenant un numéro de bon


je sait que je ne suit pas très clair et je m'en excuse

https://www.cjoint.com/?icqqQ1SFPr
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 août 2008 à 23:48
J'ai pourtant été clair, du moins il me semble...
Ensuite, avec les données de la feuilles moteur, tu rempli complètement la feuille bon, tu demande des données de 1 à 7 mais quoi?
Pour mieux me faire comprendre, A LA MAIN TU REMPLI LE BON AVEC LES DONNEES COMME IL DOIT ETRE, JUSTE AVANT DE LE METTRE DANS LA FEUILLE IMPRESSION. comme ça, j'ai des repères sur ce que tu veux.
Et question suplémentaire, tu dit ensuite passer à la ligne suivant et recommencer,
MAIS OU DOIT-ONT METTRE le 2ém formulaire... le 3em etc...sur la feuille impression ? l'un en dessous de l'autre ?
Dit-toi bien que je ne suis pas dans ta tête et qu'il me faut des renseignements, tant que je ne sais pas exactement ce que tu veux il est impossible d'y arriver.
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 11:37
bonjour

et encore merci de ta patience
je te remet un exemple avec un bon rempli avec les informations que je veux voir apparaitre dessus
oui les bon doivent être enregistré a la suite sur la feuille impression

https://www.cjoint.com/?idlFcTBcHA

le ne sait pas si ce que je souhaite réaliser est faisable donc si tu as une autre solution qui puisse me faire avancer je suis a ton écoute
merci de ton aide
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 18:53
j'ai consulté la base de connaissance microsoft il s'avére que c'est un bog
je te met les info
Vous avez un DLL ActiveX Visual Basic qui possède une méthode qui prend un tableau de Scripting Dictionary Objects comme un argument. Il peut correctement fonctionner lorsque votre client Visual Basic est exécuté dans l'environnement de développement Visual Basic intégré (IDE) en utilisant cette méthode mais lorsque vous l'exécutez en tant qu'application compilée, vous recevez le message d'erreur suivant d'exécution :
Erreur d'exécution "-2147417848 (80010108)" :
Méthode '~~ ' échec "d' objet"
Cela se produit uniquement lorsque vous utilisez une liaison tardive pour appeler la méthode.

Retour au début
Résolution
Utilisez la liaison anticipée pour contourner le problème.


comme je ne suis pas trés doué en vba je vais continuer a chercher jusqu'a trouver une solution
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 13:54
Aucun problème pour faire ce que tu voulais, j'ai fait avec les renseignements donner.
Si pas tout à fait ça tu dit...
Ton classeur
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 15:43
Je te remercie beaucoup pour ton aide et surtout ta patience
c'est exactement ca que je cherchait a faire depuis un mois sans y parvenir

je vais encore te solliciter ta macro me recopie remplis bien le premier bon mais aprés elle m'envoie un message d'erreur "la méthode paste de l'objet a échouée" ou "la methode select class a echoué"
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 16:53
Fais BIEN ATTENTION aux noms des feuilles, si tu m'a mis un modèle avec les noms de feuilles différents c'est pour cela que ça plante, souvent, un espace fait la différence. Si tu teste sur mon classeur, les 2 bons sont bien copier dans impression.
Alors cherche un peu... A toi de jouer.
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 17:44
je teste bien sur le classeur que tu m'as envoyé et j'ai toujours cette erreur
je vais continuer a chercher
encore merci pour ton aide qui m'as été bien plus que précieuse.
je te tient au courant de l'évolution de la situation
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 17:54
Tu a l'erreur sur MON CLASSEUR ? si oui, tu a changer quoi ? parce que chez moi il fonctionne nickel.
EDIT: Attend... tu l'essayerait pas sur Cjoint par hazard??? Parce que ca fonctionne pas, il faut clik droit sur le nom du fichier et le sauver sous sur ton DD, et alors là l'ouvrir.
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008 > lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020
3 août 2008 à 18:33
j'ai bien enregistré le fichier sur mon disque dur
je me pose la question de savoir si c'est pas le fait que j'utilise une version excel 97
ta macro fonctionne bien sur la premiere ligne mais a la suivante elle envoie l'erreur
elle n'arrive pas a coller le bon a la suite du premier dans feuille impression
résultat excel plante je suis obligé de faire de faire ctrl ALT supp pour pouvoir sortir

je continu a chercher d'où peut venir le bug il n'y a pas de raison que sa fonctionne chez toi et pas chez moi

merci encore de ton aide
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 19:42
Faudra bien trouver une solution..
essaye ceci..
'
---------------------------------------------
        'Copie le bon dans la page d'impression.
        FLbon.Range("A4:G19").Copy FLI.Cells(LigImp, 1)
        LigImp = LigImp + 16
'---------------------------------------------

Dans le bas de la macro remplace toute les lignes entre leslignes-tirets pour que ce soit comme ci-dessus, ça fonctionne aussi chez moi, j'ai pas employer cette méthode en premier parce qu'elle aussi crée quefois des prob.
tu dit
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 20:05
j'ai toujours la même erreur
le premier bon est recopier dans feuille impression puis cette erreur
j'ai l'impression que c'est la variable
Dim LigImp As Long qui pose probleme
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 20:21
Apparement c'est une erreur Windows.
Un DLL ActiveX Visual Basic qui se connecte dans le journal des événements Windows NT peut provoquer des erreurs lorsqu' être appelées par un programme client exécuté en le débogueur Visual Basic. Possibles erreurs incluent :

• Erreur 429.
• Erreur 80010108 OLE.
• Violation d'accès.

Statut
Microsoft a confirmé l'existence d'un problème dans Microsoft Transaction Server version 1.0. Nous recherchons ce problème et publierons l'information nouvelle ici nous dans la Base de connaissances Microsoft dès qu'il est disponible


Quel est la mise à jour de windows que tu a ? PakX ?
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 20:30
J'ai relu le message d'erreur que tu a donné... semblerait que c'est une erreur avec les objets.
Remplace la ligne copy par
        Sheets("bon").Range("A4:G19").Copy Sheets("impression").Cells(LigImp, 1)

et si ca va pas encore je changerais dans le corp de la macro

Edit:
Y a encore quelque chose, vérifie dans la fenêtre Projet - VBAprojet de l'IDE, si tu n'a pas le projet MoreFunc_Toolbaar
Tu dit
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 21:02
j'ai fait les modif maintenant le message d'erreur est "impossible de lire la propriété spécialCells de la class range" erreur d'execution 1004

j'ai une XP pro SP3 mis a jour régulierement
non je n'est pas dans projet vba de projet toolbar

je continu a chercher
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 21:08
remet ton classeur sur Cjoint
Edit;
Attend.. quand Excell à planté, tu à rebooté ? sinon, fait le.
Moi j'ai le 2000 et quand ça m'arrive je doit faire ça aussi.
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 21:23
j'ai rebooté retesté mais toujours les mêmes symptômes docteur

je te remet le classeur j'ai laissé l'erreur pour que tu puisse la voir

https://www.cjoint.com/?idvunZFA47
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 21:48
désolé mais j'ai télécharger le classeur, j'ai clik sur le bouton et tout est OK.
Sans ton PC je ne vois vraiment pas ce qui voir ce qui cloche.
Vérifie encore celà..
Dans l'IDE >> Outils >> Références
Dans la fenêtre ouverte tu doit avoir les lignes suivante qui sont cochée..
Visual Basic For Applications
Microsoft Excel X.X Object Library
Ole Automation
Microsoft Office X.X Object Library
Microsoft Forms 2,0 Object Library
Si un manque, recherche le dans la liste et tu coche.
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
3 août 2008 à 22:27
j'ai testé la macro sur un autre pc même résultat

donc soit il me manque une librairie ou ma version excel est bugué
je vais continuer a analyser la macro jusqu'a trouver ou ça bloque
merci encore pour ton aide et ta grande patience
je te tient au courant si du nouveau
a+
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 août 2008 à 22:56
tu a vérifié les référence que je donne plus haut ?
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 août 2008 à 07:41
J'ai remanier la macro et éliminer tout ce qui a trait aux objets, c'est pas un code optimisé mais probablement qu'il fonctionnera.

https://www.cjoint.com/?iehNn0c54X
A+
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
4 août 2008 à 10:49
bonjour
merci de ton aide je me sens gêné de te monopoliser ainsi
tu as mon infinie gratitude
j'ai testé la macro il y as du mieux cet fois elle fonctionne mais tant que je n'es pas vidé la feuille impression sinon rebelotte erreur
If Cells(LigImp, 1).Interior.ColorIndex = xlNone Then Exit For

impossible de lire la propriété interior de la class range
merci encore de ton aide
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
4 août 2008 à 13:02
j'ai modifier la maniere de recopier les bon dans la page d'impression ça a l'air de fonctionner bien que ça me copier les bon dans l'ordre décroissant

mais faute de mieux pour l'instant

c'est bien cette ligne qui ne passe pas chez moi va savoir pourquoi
Copie le bon dans la page d'impression.
Sheets("bon").Range("A4:G19").Copy Sheets("impression").Cells(LigImp, 1)
LigImp = LigImp + 16

je l'es remplacé par

'Copie le bon dans la page d'impression.
Sheets("bon").Select
Range("A4:G20").Select
Selection.Copy
Sheets("impression").Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown

merci encore infiniment pour ton aide et c'est sincére tu m'as sorti d'une impasse un mois que je galére avec cette macro
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
4 août 2008 à 13:48
Non, reprend ce classeur alors, et ajoute en dessous de...
    'il y a bien des formules pour arriver à la dernière ligne
    'remplie mais ça ne fonctionne pas quand il y a des filtres
    'qui sont activés.
    If LigImp < 1 then LigImp = 1

Cà n'avait plus rien à voir avec les erreurs précédantes, c'est une erreur normale si LigImp =0
Parce que ta façon de faire dans le poste suivant est pas fort...euhh
A+
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008 > lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020
4 août 2008 à 14:39
j'ai tenté ta modif mais renouveau erreur

c'est la manière de recopier dans la feuille impression qui ne passe pas chez moi
2 eme point je vient de m'apercevoir que si la première cellule dans la feuille liste moteur était vide la macro s'arrete et ne va pas voir les autres cellules

je suis entrain de voir si je peut remplacer if par each for
qu'en penses tu
soit indulgent avec moi je débute en macro et tu m'as aidé a progresser
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
5 août 2008 à 08:10
ne change rien au for, sinon ca ira plus, pour faire un For each il te faut connaître jusqu'où aller, ce qui n'est pas possible avec tes filres.
C'est fait exprès que ca s'arrète, il ne faut pas de ligne vide toutes les 2 lignes, c'est a cause des autofilters que tu as mis, il est difficile de connaître jusqu'ou aller, mais si tu me met un classeur un peu plus complet et réaliste je revérais cela.
et explique à quoi sert cette formule, c'est pour cela que je n'ai pris que toutes les deux lignes..
=NBVAL(X4;AB4;AF4;AJ4;AN4;AR4;AV4)-NBVAL(X5;AB5;AF5;AJ5;AN5;AR5;AV5)
Je t'ai déjà posé la question mais tu n'y a pas répondu.
La feuille moteur est-elle finie où elle peut varier au fil du temps ?
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 août 2008 à 15:44
Haaaach.. Maintenant je comprend mieux, tu a changer la formule =NBVAL(X5;AB5;AF5;AJ5;AN5;AR5;AV5) qui ne fait plus référence à la ligne suivante et ta 2èm ligne est initialisée. La preuve qu'il faut donner un max de renseignements et pas érronés.
Sub SplitData()
Dim i As Long, e As Integer
Dim TB
Dim Ls
    TB = Array(16, 17, 18, 50, 22, 26, 30, 38, 42, 46)
    Ls = Array("C9", "D9", "A9", "F4")
'---------------------------------------------
    'Largeur des colonnes
    For i = 1 To 7
        Sheets("impression").Columns(i).ColumnWidth = Sheets("bon").Columns(i).ColumnWidth
    Next i
'---------------------------------------------
    For i = 4 To Range("AX1").SpecialCells(xlCellTypeLastCell).Row
        If Sheets("Liste moteur").Cells(i, 50) <> "" Then
           ' VideBon
            For e = 0 To 3
                Sheets("bon").Range(Ls(e)) = Sheets("Liste moteur").Cells(i, TB(e))
            Next e
            For e = 0 To 5
                Sheets("bon").Range("B10").Offset(0, e) = Sheets("Liste moteur").Cells(i, TB(e + 4))
            Next e
    '---------------------------------------------
            'Copie le bon dans la page d'impression.
            Sheets("bon").Select
            Range("A4:G20").Select
            Selection.Copy
            Sheets("impression").Select
            Range("A65536").End(xlUp).Offset(1, 0).Select
            Selection.Insert Shift:=xlDown
'---------------------------------------------
        End If
    Next i
    Application.CutCopyMode = False
    Sheets("Liste moteur").Select
    Range("A1").Select

End Sub


A+
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
5 août 2008 à 16:04
Merci infiniment pour ton aide cette fois la macro marche a la perfection
encore mille excuse pour mes explications qui je te l'avoue n'étaient pas toujours claires
Je te suis redevable et une partie de la réussite de mon stage je te la devrait

encore merci et a +
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
5 août 2008 à 22:06
excuse moi je sais que j'abuse de ta gentillesse
je te sollicite encore voila j'ai créer avec l'enregistreur une macro mais elle n'est pas du tout optimisée

peut tu me dire comment faire pour ne pas faire de répétition

lBonjour,

j'ai créer cette macro avec l'enregistreur elle fonctionne mais j'aimerais l'optimiser
2 eme point comment éviter que la fonction find plante si elle ne trouve pas la valeur recherché

Sub valider()
'

' Macro enregistrée le 05/08/2008
'
Application.ScreenUpdating = False



Sheets("BDD").Select
Cells.Find(What:=Sheets("feuille de saisie").Range("J6").Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate


ActiveCell.Offset(0, 1).Copy
Sheets("feuille de saisie").Select
Range("K17").Select
ActiveSheet.Paste

Sheets("BDD").Select
ActiveCell.Offset(0, 2).Copy
Sheets("feuille de saisie").Select
Range("K18").Select
ActiveSheet.Paste

Sheets("BDD").Select
ActiveCell.Offset(0, 3).Copy
Sheets("feuille de saisie").Select
Range("K19").Select
ActiveSheet.Paste

Sheets("BDD").Select
ActiveCell.Offset(0, 4).Copy
Sheets("feuille de saisie").Select
Range("K20").Select
ActiveSheet.Paste

Sheets("BDD").Select
ActiveCell.Offset(0, 5).Copy
Sheets("feuille de saisie").Select
Range("K21").Select
ActiveSheet.Paste

Sheets("BDD").Select
ActiveCell.Offset(0, 6).Copy
Sheets("feuille de saisie").Select
Range("K22").Select
ActiveSheet.Paste

Sheets("BDD").Select
ActiveCell.Offset(0, 7).Copy
Sheets("feuille de saisie").Select
Range("K23").Select
ActiveSheet.Paste

Application.ScreenUpdating = False

End Sub

merci
-1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 août 2008 à 10:37
Bonjour,
Comme j'ai pas tes feuilles j'ai pas su vraiment tester
Sub valider()
Dim RC As String

    Application.ScreenUpdating = False
    
    Sheets("BDD").Select
    On Error Resume Next 'si erreur sur le Finf
    Sheets("BDD").Select
    Cells.Find(What:=Sheets("feuille de saisie").Range("J6").Value, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
    On Error GoTo 0 ' annule la détection d'erreur
    
    RC = ActiveCell.Offset(0, 1).Address & ":" & ActiveCell.Offset(0, 7).Address
    Range(RC).Copy
    Sheets("feuille de saisie").Select
    Range("K17").Select
    ActiveSheet.Paste
    Application.ScreenUpdating = False
End Sub

A+
-1
caribou38 Messages postés 30 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 28 août 2008
6 août 2008 à 14:57
bonjour

j'ai substituer ta macro a celle que j'avais et elle fonctionne parfaitement merci

je te met en piece jointe mon classeur si tu as le temps d'y jeter un coup d'oeil
certaines fonction risque de buguer car je n'est pas mis l'intégralité qui fait 4MO

j'ai essayer de mettre les boutons qui se trouve dans les feuilles dans une barre d'outils mais sans succés
je ne réussi qu'a faire planter l'ensemble

deuxieme point les fonction find qui plante si pas de résultat trouvé

merci encore pour toute l'aide que tu m'as fournie

https://www.cjoint.com/?igo3TGgddD
-1