CTRL + F + divers problèmes
Bonjour le forum,
J'ai crée une macro permettant de remplir différent docs, à partir de plusieurs classeurs différents.
Pour cela, j'ai enregistrée la macro, et plusieurs fois j'utilise la fonction "CTRL+F" par rapport à des données stockées sous forme integer ou string. Après, j'y apporte quelques modifications du type insertion de Inputbox pour demandée les valeurs cherchée.
Problème ;
1. Puis-je lui ordonner de rechercher uniquement dans la colonne B:B ? Si oui, aurait-il fallu que je le fasse durant l'enregistrement en sélectionnant la colonne? Puis-je y remédier sans avoir à réenregistrer ?
2. Quand il trouve la valeur cherchée, sélectionne t il la case correspondante ?
3. et donc, puis je repartir en utilisant la fonction Offset ?
Aussi, j'ai remarqué dans le code beaucoup de : "ActiveWindow.ScrollColumn ="
C'est quand j'utilise la molette ? Est-ce utile ? Puis-je le supprimer ?
Enfin, quand Je colle la donnée stockée en écrivant : " ActiveCell.FormulaR1C1 = Val(Mat) " il ne me la recolle pas entièrement.
Avec :
Mat = val (inputbox(" NB ")) ==> on saisit une chaine du type : 12-50
il ne colle que "12"
Cela vient du " = Val() ? comment le remplacé ?
Merci pour vos réponse; désolé pour les explications...
Bonjour
Que de question et sans support pas évident de répondre sans se planter
Clemz43 a écrit :1. Puis-je lui ordonner de rechercher uniquement dans la colonne B:B ? Si oui, aurait-il fallu que je le fasse durant l'enregistrement en sélectionnant la colonne? Puis-je y remédier sans avoir à réenregistrer ?
Oui, Oui, Oui
Clemz43 a écrit :Quand il trouve la valeur cherchée, sélectionne t il la case correspondante ?
Oui pour (Ctr + F) Non pour Find
Clemz43 a écrit :3. et donc, puis je repartir en utilisant la fonction Offset ?
Oui
Clemz43 a écrit :Aussi, j'ai remarqué dans le code beaucoup de : "ActiveWindow.ScrollColumn ="
C'est quand j'utilise la molette ? Est-ce utile ? Puis-je le supprimer ?
Oui, Non, Oui
Clemz43 a écrit :Cela vient du " = Val() ? comment le remplacé ?
Tout simplement
ActiveCell = inputbox(" NB ")Pour des réponses plus détaillées un fichier avec la macro que tu as enregistré suffira
Que de question et sans support pas évident de répondre sans se planter
Je sais, et j'en suis désolé, mais il n'est parfois pas évident de montrer l'intégralité d'un code, et d'être soucieux des problèmes de confidentialité. (Nom des fichiers, + noms des colonnes. etc...). Je vais créer un fichier "ressemblant" et "allégé".
Pour en revenir à mon problème,
Merci déjà pour la réponse formulée. J'ai pu me dépatouiller un peu.
Comme je l'ai dit, c'est déjà pour accélérer des saisies de données, des résultats d'analyses de matériaux.
J'ai rencontré un nouveau problème, c'est que les valeurs dans le tableau sont données en Newton. Dans le tableau à remplir, elles doivent être rentrées en MPa. Connaissant la formule, j'aimerais savoir quel est le moyen de calculer une valeur saisie, de la convertir.
En fait d'utiliser la formule que je connais...
Je joint cette fois ci un fichier pour plus d'explications !
merci d'avance
Banzai,
Je vais essayer de mettre en place,
Merci beaucoup pour ton aide.
Cdt,
J'éprouve quelques difficultés pour le mettre en pratique...
J'essaie de remplacer selon mon doc, et j'obtiens "code d'erreur 438"
au niveau de cette ligne :
Set Cel = .Columns("F").Find(what:=Range("B" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
En fait , j'ai essayé de remplacé le noms des "sheets" par "windows" ; et la valeur des "columns" et "range" selon mon document.
Si tu pouvais me dire ou est l'erreur pour que je puisse comprendre, et ne plus vous embêter
Ci dessous un aperçu :
Lg = Range("B" & Rows.Count).End(xlUp).Row + 1
' ' Si tu veux choisr son emplacement
' Lg = ActiveCell.Row
Range("F" & Lg) = InputBox("Saisir OF")
With Windows("PLANNING 2012.xls")
Set Cel = .Columns("F").Find(what:=Range("B" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
If Not Cel Is Nothing Then
Range("B" & Lg) = Cel.Offset(0, 1)
Else
MsgBox "OF introuvable"
End If
Set Cel = .Columns("E").Find(what:=Range("D" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
Range("D" & Lg) = Cel.Offset(0, 1)
Set Cel = .Columns("D").Find(what:=Range("K" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
Range("K" & Lg) = Cel.Offset(0, 1)
Set Cel = .Columns("A").Find(what:=Range("J" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
Range("J" & Lg) = Cel.Offset(0, 1)
End With
Range("G" & Lg) = InputBox(" Saisissez lot Mat 1ère")
With Windows("cdes-12")
Set Cel = .Columns("A").Find(what:=Range("C" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
If Not Cel Is Nothing Then
Range("E" & Lg) = Cel.Offset(0, 1) / (Cel.Offset(0, 3) * 25) * 1000
Range("D" & Lg) = Cel.Offset(0, 3)
Else
MsgBox "lot Mat 1ère introuvable"
End If
End With
End Sub
Bonjour
Travailler sans filet (sans fichier) pas évident
Essayes
Sub Bis()
Dim Cel As Range
Dim Lg As Long
Lg = Range("B" & Rows.Count).End(xlUp).Row + 1
' ' Si tu veux choisr son emplacement
' Lg = ActiveCell.Row
Range("F" & Lg) = InputBox("Saisir OF")
With Workbooks("PLANNING 2012.xls").Sheets("Planning")
'With Windows("PLANNING 2012.xls")
Set Cel = .Columns("F").Find(what:=Range("B" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
If Not Cel Is Nothing Then
Range("B" & Lg) = Cel.Offset(0, 1)
Else
MsgBox "OF introuvable"
End If
Set Cel = .Columns("E").Find(what:=Range("D" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
If Not Cel Is Nothing Then
Range("D" & Lg) = Cel.Offset(0, 1)
Else
MsgBox Range("D" & Lg) & " introuvable"
End If
Set Cel = .Columns("D").Find(what:=Range("K" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
If Not Cel Is Nothing Then
Range("K" & Lg) = Cel.Offset(0, 1)
Else
MsgBox Range("K" & Lg) & " introuvable"
End If
Set Cel = .Columns("A").Find(what:=Range("J" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
If Not Cel Is Nothing Then
Range("J" & Lg) = Cel.Offset(0, 1)
Else
MsgBox Range("J" & Lg) & " introuvable"
End If
End With
Range("G" & Lg) = InputBox(" Saisissez lot Mat 1ère")
'With Windows("cdes-12")
With Workbooks("cdes-12.xls").Sheets("Résultats analyse")
Set Cel = .Columns("A").Find(what:=Range("C" & Lg), LookIn:=xlFormulas, lookat:=xlPart)
If Not Cel Is Nothing Then
Range("E" & Lg) = Cel.Offset(0, 1) / (Cel.Offset(0, 3) * 25) * 1000
Range("D" & Lg) = Cel.Offset(0, 3)
Else
MsgBox "lot Mat 1ère introuvable"
End If
End With
End SubSi pas ça il faut les noms exacts des fichiers, dans quelles pages, quelles colonnes il faut faire la recherche
Macro opérationnelle.
Fichier en place.
Gain de temps estimé : 20 à 30 minutes / jours minimum. Ce n'est pas rien, surtout dans le contexte actuel.
Merci beaucoup Banzai64!