Macro Copier coller Collone spécifique de plusieurs feuilles sur synthese

Bonjour à tous,

Je débute dans VBA. De ce fait j'ai un peu de mal à élaborer une macro pour le stage que j'effectue actuellement.

Pour vous expliquer :

j'ai transférer des bases comptables de plusieurs sociétés sur mon fichier .

Le fichier est donc composé de bases. MAIS également, d'une feuille " MENU" , "SYNTHESE", et " FRAIS".

Dans les bases, se trouvent des colonnes que je souhaite récupérer.

Colonnes à récupérer : " Rubrique " " Réel" " Budget".

Je souhaiterais donc récupérer toutes les données correspondantes à ces colonnes et les coller dans l'autre feuille nommée " Synthèse".

Si vous le souhaitez je vous montre la macro que j'ai actuellement mais qui ne fonctionne pas.

Je vous remercie par avance de votre aide.

Personne ne peut m'aider ?

Bonjour Lilou_Sm (et bienvenue ... avec un peu de retard)

Si 24 personnes ont lu ton message et qu'à cette heure, tu n'as toujours pas obtenu le moindre début de piste, c'est sans doute parce qu'en l'état, on ne peut pas te répondre. Relancer la discussion aurait pu fonctionner, mais ... mets-toi plutôt à notre place un instant: nous n'avons jamais vu ton fichier et n'avons aucune idée de ce à quoi il pourrait ressembler; comment donc pourrions-nous proposer une solution ?

Comment savoir si les titres de colonnes sont systématiquement écrits de la même manière, positionnés dans les mêmes lignes et/ou les mêmes colonnes, dans tes différentes feuilles ?

Par exemple, quand tu écris:

Colonnes à récupérer : " Rubrique " " Réel" " Budget"

... le caractère d'espacement qui précède (et suit, parfois) chaque terme, c'est volontaire ? En va-t-il de même dans ton classeur ?

Si tu repasses par ici, commences-tu à entrevoir pourquoi ta bouteille à la mer semble s'être échouée sur une plage déserte ?

Bonjour,

Je vous remercie de votre réponse.

Afin d'apporter davantage de précisions je vous transmets le fichier dans lequel je souhaiterais effectuer la macro.

J'ai mis toutes les précisions afin que ce soit plus claires.

Si toutefois certaines choses ne le sont toujours pas, n'hésitez pas à m'en faire part afin que j'explique différemment.

En vous remerciant.

9exemple-ch-fg.xlsx (15.39 Ko)

Bonsoir,

Comment savoir si les titres de colonnes sont systématiquement écrits de la même manière, positionnés dans les mêmes lignes et/ou les mêmes colonnes, dans tes différentes feuilles ?

On sait maintenant que les colonnes risquent bien de changer de place ... MAIS
  • dans tes deux exemples, les titres sont en ligne 1 pour les deux feuilles Société. Est-ce que ce sera toujours le cas ?
  • j'ai demandé si les titres des colonnes seraient toujours écrits de manière identique ... et là on ne peut pas dire que tu me rassures beaucoup deux orthographes distinctes pour "Libellé" et pour "N° Compte" (voire 3 pour cette dernière mention !!)
    En Excel, la plus grande rigueur s'impose!

Quand tu joins un fichier, facilite-nous un peu le travail des tests: encode des données "bidon" dans les feuilles des deux sociétés.

Précise aussi si, en dehors de la feuille "Menu" et de la feuille "Base", toutes les autres feuilles concerneront les sociétés à traiter.

Enfin, donne-nous une évaluation du volume total des données (5 feuilles d'une vingtaine de lignes ou 100 feuilles de 5000 lignes chacune)

Bonjour,

Je vous remercie, et je tiens également à m'excuser car je débute c'est vrai qu'il est compliqué de visualiser les choses.

Je vous joint donc le fichier type avec plus de détails ...

Pour récapituler :

  • Je dois extraire 24 bases.
  • Ces bases comportent environ 200 lignes.
  • Les libellés des colonnes se trouvent tous à la première ligne. ( Ligne 1)
  • Une fois que l'extraction est faite je souhaiterais attribuer en colonne A:A le nom de la société. J'ai réalisé une macro qui marche grâce à l'enregistreur mais je suis en train d'essayer autre chose afin de rendre le résultat plus compréhensible.
  • Je souhaiterai récupérer les colonnes dont leur nom sont :
N°Compte ou N°CPTE ==> En effet, selon les sociétés on peut retrouver N°Compte ou N°CPTE donc je ne sais pas si c'est possible de récupérer les données lorsque les titres ne sont pas identiques.

Libellé

Valeur

  • Il se peut que ces colonnes ne soient pas à la même place d'une société à l'autre donc je ne peux pas copier en fonction du numéro de la colonne mais seulement en fonction des désignations.
  • Lors de la copie on doit prendre en compte toutes les feuilles sauf la FDC "MENU" et " BASE".
  • J'aimerais copier les valeurs les unes à la suite des autres dans le fichier BASE.

Je vous remercie infiniment de votre aide.

En espérant avoir été complète dans mes explications ...

16exemple-ch-fg.xlsx (19.40 Ko)

Bonsoir,

Tant qu'à écrire une macro pour récupérer tes "bases", tu aurais pu faire en sorte que les emplacements des colonnes et les intitulés soient identiques

Si ton fichier réel ressemble véritablement à ton exemple, teste ce qui suit dans un module standard:

Sub conso()
For Each f In Sheets
    Dim tablo()
    If f.Name <> "BASE" And f.Name <> "menu" Then
        colNum = Application.Match("N°Compte", f.[1:1], 0)
        If IsError(colNum) Then colNum = Application.Match("N°CPTE", f.[1:1], 0)
        colVal = Application.Match("Valeur", f.[1:1], 0)
        colLib = Application.Match("Libellé", f.[1:1], 0)
        derligne = f.Cells(Rows.Count, colNum).End(xlUp).Row
        For lig = 2 To derligne
            ReDim Preserve tablo(3, x)
            tablo(0, x) = f.Name
            tablo(1, x) = f.Cells(lig, colNum)
            tablo(2, x) = f.Cells(lig, colLib)
            tablo(3, x) = f.Cells(lig, colVal)
            x = x + 1
        Next lig
    End If
Next f
Sheets("Base").Cells(2, 3).CurrentRegion.Offset(1, 0).ClearContents
Sheets("Base").Cells(3, 3).Resize(x, 4) = Application.Transpose(tablo)
End Sub

... et tu verras bien s'il y a des cas qui échapperaient à tes prévisions, si le résultat est conforme à tes attentes, etc.

Bonjour,

Je te remercie pour cette macro.

Toutefois, je reçois un message d'erreur " Incompatibilité de type " et c'est cette partie de la macro qui est surlignée :" derligne = f.Cells(Rows.Count, colNum).End(xlUp).Row" .

Je ne comprends pas trop ..

Merci d'avance.

Je pense avoir trouver pourquoi ça ne marche pas.

J'ai une feuille de calcul correspondant à une base comptable d'une société pour laquelle il n'y a aucune donnée. Il faudrait donc qu'à chaque feuille , si il n'y a rien dans la feuille alors on ne met rien dans " BASE".

Le raisonnement est-il bon ?

Je vous remercie du temps que vous passez sur cette macro.

Bonjour,

Le raisonnement est-il bon ?

sans aucun doute, oui

... mais comment détecter si la feuille est vide, puisque tu dis que l'emplacement des colonnes peut varier ? Les titres des colonnes figurent-ils tout de même dans ces feuilles "vides" ? Si oui, peut-on considérer que la feuille est à "exclure" si la cellule sous le titre "Valeur" est vide ?

Si pas de titres, faut-il considérer la feuille comme "vide" si la ligne 1 ne contient rien ?

Rechercher des sujets similaires à "macro copier coller collone specifique feuilles synthese"