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