VBA Copier / Coller avec offset dans un autre onglet si valeur trouvée

Hello à tous,

Ci-joint un fichier avec un onglet devis et un deuxième onglet ou je sauvegarde mes devis au cas ou je veux revenir dessus.

Ce que je souhaite faire c'est que lorsque dans l'onglet Devis je tape un numero de devis, si excel trouve la correspondance dans l'onglet Sauvegarde, il copie les cellules correspondante au devis en question et les colles sur l'onglet devis (ce qui à pour effet de mettre à jour les infos avec celle de l'ancien sauveardées).

Voilà j'espere avoir ete clair.

Voici le fichier exemple.

Merci à tous

19test.xlsx (9.64 Ko)

Bonjour Nico,

Voici une proposition.

J'ai un peu adapté le fichier.

J'ai crée un onglet "Base Devis" qui regroupe les informations de tes devis sous un tableau (ce qui est bcp + synthétique)

Après, dans ta feuille "dev", j'ai crée un bouton, quand tu cliques dessus, cela ajoute les informations du devis dans la "base Devis" si le devis n'existe pas, cela modifie un devis existant si il existe.

A ce sujet, je trouve qu'il serait plus judicieux de créer un nouveau devis à chaque modification car dans ton cas, tu n'as plus aucune trace de la 1ere version du devis que tu as fournis, mais bon ça c'est à toi de voir.

Concernant le fichier, dans l'onglet "Dev", j'ai nommé chaque cellule qui doit contenir des valeurs.

La contrainte est donc la suivante. Le nom de la cellule doit être exactement le même que le titre de colonne dans la base.

En espérant que cela te convienne.

A+

36devis-voiture.xlsm (25.02 Ko)

Woua super ton truc.

Je savais pas comment synthétiser mes devis en ligne toute simple comme tu l'as fait.

Effectivement ca force à renommer tous les items du devis mais une fois que c'est fait ca fait gagner un temps monstre.

J'avais bidouillé ca pour info avec mes maigres connaissances, ca copiait l'integralité du devis mais avec la mise en page et les cellules vides donc pas optimisé du tout

Sub Macro2()

Dim cl As Range

With Worksheets("Dev_Sav").Cells

Set cl = .Find(Worksheets("Dev").Range("B3"), After:=.Range("A1"), LookIn:=xlValues)

If Not cl Is Nothing Then

Range(cl.Offset(10, 0), cl.Offset(0, 0)).EntireRow.Copy _

Destination:=Worksheets("Dev").Range("A3:C13")

End If

End With

End Sub

Du coup as tu une idée ou une piste pour arriver au résultat inverse et faire un "recall" d'un devis sauvegardé dans l'onglet "BaseDevis" dans "Dev", en faisant une recherche par nom et numero de devis ??

Le soucis c'est que si pour un meme client j'ai plusieurs numero de devis il va falloir creer une liste qui regroupe tous les choix dispo ...

J'avais penser a la fonction .Findall mais je maitrise pas encore tres bien ...

Merci bcp en tout cas pour le boulo accompli

Nico

Salut Nico,

Voici une proposition avec rappel du devis par numéro de devis.

A voir si cela suffit ou si il faut aussi une recherche par nom.

Jers

26devis-voiture.xlsm (29.91 Ko)

Effectivement par nom ce serai plus simple

L ideal serait meme que ca fonctionne avec une partie du nom j ai cru comprendre que ca se faisait comme ca (*value*).

En gros dans un monde parfait , je lancerai une recherche dans la bdd des devis , sur la page dev en resulterai une liste de devis correspondant au critere (nom) et ensuite un double clic sur le numero de devis fais un recall du devis en question.

J y suis presque arrivé mais c est pas très orthodoxe et j arrive pas a avoir la recherche partielle.

Donc ton aide serait la bienvenue jusqu au bout pour avoir un exemple « propre ». En tt cas grace a toi et tes codes j ai appris plein de truc en VBA 😁.

Merci encore poir ton temps (j essaie de poster demain matin un exemple de mon bidouilllage si ca t aide...)

Ok je regarde ça et je t'envoie ça demain

Super gentil. Demain je te fais un fichier simplifié aussi (au cas ou j aurais pas ete tres clair dans mes explications). Encore 🙏🏻 mercii

Salut,

Voici une proposition.

Jers

40devis-voiture.xlsm (36.52 Ko)

Super je teste ca de suite.

Au passage, aurais tu une idée pour faire une liste déroulante avec autocomplete au fur et a mesure qu'on tape ?

J'ai trouvé des truc sur le forum mais je suis sur mac donc des qu'il y a une combobox ca marche pas ...

Si tu sais faire avec une liste deroulante dans "validation" ou si t'as ne serait-ce qu'un lien à me proposer ... (il me manque plus que ca et j'ai fini mon fichier grace à toi) .

Excellent le userform !!!

C'est super merci 1000 fois 🙏 🙂

Cool

ravie d'avoir pu t'aider.

si tout est ok pour toi. merci de clôturer le sujet.

jers

oui je cloture avec plaisir ! As-tu juste un piste pour les listes deroulantes comme je t'ai demandé plus haut ?

Merci bcp

Oui désolé j'avais pas vu ton message

dans validation, tu choisis liste puis dans source tu indiques :

  • soit directement des choix (ex : marque1;marque2;marque3)
    soit tu indiques une plage de données comprenant ta liste (attention doit se trouver sur la même feuille)
    si ta plage de données se situe dans un autre onglet, il faut nommer cette plage et indiquer dans source le nom de cette plage
    ex : si ta plage s'appelle ListeMarque, dans source tu écrit =ListeMarque

Oui ca ge gere c est surtout pour l autocomplete que je cherche ... en gros je cherche a faire ce que tu as fait dans ton userform mais dans une cellule

Je ne suis pas sur de comprendre ce que tu veux faire.

Tu veux faire une liste déroulante dans quelle cellule et avec quelles informations.

Je vais rajouter un onglet avec le nom de tous mes clients. L idee serait de faire une liste deroulante qui au fur et a mesure que je tape se me donne les suggestions correspondante.un peu a la google quoi. J ai trouver des tuto mais le pro leme c est que excel sous mac ne gere pas les combobox donc je voudrai le faire dans une liste deroulante standard, dans une cellule avec données/ validation

je ne pense pas que ce soit possible avec une liste.

tu peux poser la question sur le forum en ouvrant un nouveau sujet.

par contre tu peux faire un userform comme pour l'affichage d'un devis existant

en gros tu cliques sur la cellule du nom à remplir. ca t'ouvre l'userform, tu tapes le début puis tu choisis dans la liste.

Bonne idee. Merci pour toutes ces reponses. 🙇🏼

pas de problème

bonne continuation à toi.

jers

Rechercher des sujets similaires à "vba copier coller offset onglet valeur trouvee"