Copier Et coller une plage de données avec un compteur variable

Bonjour,

J'ai besoin de vos lumierès .

Je cherche à contruire ce tableau ( il doit commencer par la ligne 4, en tête) en se basant sur les trois premiers onglets

Pour faires les combinaisons entre les villes, les interlocuteurs et les opérations

NB : le nombre de villes, d'interlocuteurs ou d'opérations sont variables dans le temps.

on les trouve dans les 3 premiers onglets , c'est là en effet que l'on met à jour les données,

SVP, auvez vous une idée de comment faire via un vba.

Je n'arrive pas à traduire mon idée en code.

1/ aller dans l'onglet Villes, copier les lignes non vides et venir les coller ici dans cette feuille colonne A

autant de fois qu'il y a d'interlocuteurs, c'est le nombre d'interlocuteur qui est don mon compteur.

2/Et après je colle les interlocteurs dans la colonne B sur toutes les lignes non vide des villes (A).

3/ pour les opérations, je fais une symétrie avec les villes. Je pense même qu'il faut metre les colonnes

dans cet ordre (Villes, Opération et Interlocuteurs)

Merci beacoup pour votre aide.

Ci-joint le fichier :

Ci-après la macro qui fait que coller la une seule fois les villes. et Ca s'arrête là. Pouvez-svp m'aider à voir ce qui ne fonctionne pas et avez vous des piste pour coller les interlocuteurs et les opérations.

Sub TableauConso()

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False

Dim i As Long
Dim j As Long

          'Pour récupérer le nombre de villes
           ThisWorkbook.Sheets("Villes").Activate
           Range("A5").Select
           Range(Selection, Selection.End(xlDown)).Select
           NbreVilles = Application.WorksheetFunction.CountA(Selection)

          'Pour récupérer le nombre d'interlocuteurs
           ThisWorkbook.Sheets("Interlocuteurs").Activate
           Range("E5").Select
           Range(Selection, Selection.End(xlDown)).Select
           NbreInterlocuteurs = Application.WorksheetFunction.CountA(Selection)

          'j'incrémente mon compteur
            NbreInterlocuteurs = 1

          'Ma boucle, le nombre de fois que je fais coller ma sélection des villes
          For i = 1 To NbreInterlocuteurs
                'Je commence à coller dans la ligne, dans mon tableau
                  Ligne = 5
                  ThisWorkbook.Sheets("Villes").Activate
                  Range("A5").Select
                  Range(Selection, Selection.End(xlDown)).Select
                  Selection.Copy

                  ThisWorkbook.Sheets("conso").Activate
                   Range("A" & Ligne).Select
                  Selection.PasteSpecial
                   Ligne = NbreVilles + 5

         Next i
  pplication.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True

End Sub

Salut !

Première chose à faire quand tu vois que ça ne marche pas, c'est tester tes variables c;

Dans ton module, tu travailles plus dans un esprit macro que dans un esprit programmation, en sélectionnant de cette façon ça rétrécit le spectre des possibilités.

En dehors de ça, j'ai testé ta variable NbreInterlocuteurs et elle est à 1, ce qui signifie qu'elle ne comptabilise aucune des informations de ta feuille.

Je ne connais pas assez les fonctions pour sélectionner et compter le nombre de cellules à partir d'une sélection mais c'est celle-ci qui pose problème apparemment.

P.S. : Je viens de retrouver mon cerveau

Une autre manière que Application.WorksheetFunction.CountA() pour compter en VBA est :

Dim classeur As Workbook, ville As Worksheet
Set classeur = Workbooks(ThisWorkbook)
Set ville = classeur.Worksheets("Villes")

compteur = 0
While Not  isEmpty(ville.Cells(compteur + [Ligne de départ], [colonne])) 
      compteur = compteur + 1
      End While

Où il faut bien définir tes feuilles et classeurs

Rechercher des sujets similaires à "copier coller plage donnees compteur variable"