Formule excel : transfert de donnée

Bonjour,



je voudrais avoir de l'aide sur une formule :
je vous explique ce que je voudrais faire ; dans un classuer j'ai deux feuilles de travail
une avec une balance comptable et une vierge.
j'aimerais trouver une formule qui copie et colle la feuille une sur la feuille que si les numeros de comptes de la colonne A sont compris dans une plage précise.
ex : si les comptes sont compris entre 601000 et 609799 alors copie et colle les differentes lignes ds la feuille vierge .

merci d'avance pour votre aide,

angelique

6 réponses

  1. Contributeur
    Bonjour
    On peut le faire par VBA bien sûr mais aussi par formules....
    pour être efficace joins un extrait de ton classeur

    pour joindre une pièce
    mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
    https://www.cjoint.com/
    et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse

    transféré dans le forum bureautique....
    0
    1. bonsoir,

      voici un extrait et sur la feuille 60 (g) ce que je veux faire
      http://cjoint.com/?AJuw6MVKJiU
      merci pour votre aide
      0
    2. Contributeur
      Bonjour

      ci joint- votre modèle adapté selon ma première proposition dans le message 5 sur ce fil?

      http://www.cijoint.fr/cjlink.php?file=cj201110/cijYTvSLwu.xlsx

      Notez que votre liste de N° en colonne A est un format texte et ne peut donc pas utiliser directement en l'état les opérateur > ou <.

      Il faut donc:
      _ intégrer dans la formule de détection le *1 que vous verrez en colonne Z du fichier transmis

      ou effectuer la manip suivante
      _entrer la valeur 1 dans une cellule hors champ
      _la copier
      _sélectionner le champ de s N° en colonne A
      _Clic droit/collage spécial / multiplication
      pour transformer la liste en format numérique

      cette deuxième option est indispensable si vous voulez utiliser la macro de eljojo au message 4

      crdlmnt
      0
    3. Contributeur
      Bonjour Angèle, Vaucluse

      Avec XL2007, cela se fait en 10 minutes maxi, sans VBA ni formules....
      Je viens juste de rentrer après une journée dehors. Te proposerai cela demain matin....

      bonne soirée
      0
    4. Contributeur
      Bonsoir Michel.
      je n'ai pas de réponse d'Angèle sur ma dernière proposition
      (https://forums.commentcamarche.net/forum/affich-23422535-formule-excel-transfert-de-donnee#9)
      et le fichier joint.
      Je me permet de te re-ignaler, comme précisé dans mon message, que dans le fichier transmis par Angèle, il faut d'abord transformer en num la colonne N° de compte, car elle est en texte.
      Difficile de trouver les +grands et les + petits sans rien changer
      Bonne soirée et le cas échéant, bon week-end.
      crdlmnt
      0
    5. je viens de rentrer du travail.
      en effet ta formule fonctionne merci beaucoup je vais essayer de bien la comprendre et de voir si elle peut fonctionner avec une balance plus volumineuse.

      je veux bien voir ta solution Michel ca me permet d'apprendre des solutions diverses :) par contre j'ai j'ai windoxl2010.

      par contre vba je comprend pas tout et il me remet une formule d'erreur ! :s
      0
  2. Contributeur
    bonjour à tous,

    Avec un filtre élaboré, cela fonctionne très bien :

    http://www.cijoint.fr/cjlink.php?file=cj201110/cijSmDwmtO.xlsx

    J'ai mis en image les paramètres du filtre.
    0
    1. Contributeur
      bonjour,

      version 2007(tuto) de la solution de gbinforme (qui fonctionne aussi sous 2007 mais sans zone de critère, a voir suivant ses habitudes)
      https://www.cjoint.com/?AJwj5oGrzxg
      0
    2. Contributeur
      bonjour Michel,

      2007 !?! bienvenue sur cette version ;-)
      0
    3. Contributeur
      bonjour,gbinforme,

      Ça me rappelle un vieux post, mon cher!
      hé oui, j'ai récupéré une licence et suis rentré dans le XXI° siècle: j'ai pas fini de tout parcourir...

      Bon dimanche ensoleillé, l'espère
      0
    4. je regarde tout ca cette semaine et vous retiens au courant si tout fonctionne bien.

      en tout cas merci à tous pour votre aide

      bon dimanche
      0
  3. Bonjour,
    exemple pour copier les lignes 4 à 50

    sub a()

    for a = 4 to 50

    ' test si ta valeur est comprise entre 601000 et 609799
    if range("a" & a).value >601000 then
    if range("a" & a).value <609799 then

    ' copy la ligne
    rows(a & ":" & a).select
    selection.copy

    'selectionne la feuille "feuil2", insere une ligne et colle la ligne
    sheets("feuil2").select
    rows("a:a").select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    rows("a:a").select
    ActiveSheet.Paste

    'arrete la copy, selectionne la feuille "balance comptable"
    Application.CutCopyMode = False
    sheets("balance comptable").select

    next

    end sub

    voila
    -1
    1. merci eljojo mais quand je l'insere il me surligne sub a() comme quoi c'est un inconnu.
      désolé je suis vraiment pas forte en vba :)

      merci de ton aide
      0
  4. Essaye ce code :

    Sub Macro1()
    Dim a As Integer
    a = 4

    For a = 4 To 50

    ' tu dois remplacer la lettre entre guillemet ("a") de range("a"... qui correspond
    ' a la colonne où se situ le compte (qui doit être entre 601000 et 609799 )

    If Range("a" & a).Value > 601000 Then
    If Range("a" & a).Value < 609799 Then

    Rows(a & ":" & a).Select
    Selection.Copy
    Sheets("feuil2").Select
    Rows("a:a").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Rows("a:a").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("balance comptable").Select
    End If
    End If
    Next a

    End Sub
    -4
    1. merci je vais l'essayer demain soir et te redis si ca marche :)

      bonne soirée
      0
  5. sa marche très bien et c'est rapide. après a chacun sa solution, perso je préfère le vba car c'est plus adaptable en cas de besoin de modification.
    -6